日期:2014-05-20  浏览次数:20760 次

不再使用的类gc回收吗?
不再使用的类,gc回收吗?还是只回收对象?

------解决方案--------------------
一般情况下不会回收,因为程序不知道什么时候又会用到这个类。但是有两种特殊情况:

1、通过特殊的参数可以让 JVM 回收类的定义,更多内容请自己搜索“CMSClassUnloadingEnabled”;
2、在自定义 ClassLoader 下加载的类,当 ClassLoader 被回收时,类的定义也会被回收。
------解决方案--------------------
大增和溢出怎么可能一样。溢出也分为因为设置不对溢出,和因为程序溢出。大增也分为正常和不正常。两个词也不一样
------解决方案--------------------
引用:
Quote: 引用:

一般情况下不会回收,因为程序不知道什么时候又会用到这个类。但是有两种特殊情况:

1、通过特殊的参数可以让 JVM 回收类的定义,更多内容请自己搜索“CMSClassUnloadingEnabled”;
2、在自定义 ClassLoader 下加载的类,当 ClassLoader 被回收时,类的定义也会被回收。
软件运行过程中内存大增,这不等于某种意义上的内存溢出吗?


一般来说,JVM 在运行过程中,类的数量是不会无限增加的,类加载一次就完了,而对象则在不停的创建和回收。所以 PermGen 空间的增加被视为是可控的。