回收方法区
相比新生代一次GC
可以回收70%至99%的内存空间,方法区的垃圾回收性价比并不高。
但在大量使用反射、动态代理、CGLib
等字节码框架,动态生成JSP
以及OSGi
这类频繁自定义类加载器的场景下,
回收方法区是有必要的。
回收的内容
- 废弃的常量
- 不再使用的类型
回收类型数据需满足的条件
- 该类及其派生类的所有实例都被回收了
- 加载该类的类加载器已经被回收了
- 该类的
Class
对象没有被任何地方引用
回收类型数据相关的配置
项 | 作用 |
---|---|
-Xnoclassgc |
HotSpot 虚拟机提供了是否对类型进行回收的设置 |
-verbose:class -XX:+TraceClassLoading、 -XX:+TraceClassUnLoading |
查看类加载和卸载信息。 第1、2个参数需要在 Product 版虚拟机使用第3个参数需要 FastDebug 版虚拟机使用 |