不再使用的类gc回收吗? 你说的类是指某个类的class对象吗?肯定是不回收的了。你想啊,系统中或多或少会有个别不常用的功能,如果因为长期不使用就被回收了那以后要用怎么办。其次,从内存原理上来说,class对象都是有专门的存放区域的,有引用自然不会被删除。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一般情况下不会回收,因为程序不知道什么时候又会用到这个类。但是有两种特殊情况:1、通过特殊的参数可以让 JVM 回收类的定义,更多内容请自己搜索“CMSClassUnloadingEnabled”;2、在自定义 ClassLoader 下加载的类,当 ClassLoader 被回收时,类的定义也会被回收。 感觉现在的JVM回收机制不如以前的除了自动还可以手动回收。 一般来说,JVM 在运行过程中,类的数量是不会无限增加的,类加载一次就完了,而对象则在不停的创建和回收。所以 PermGen 空间的增加被视为是可控的。 会回收的,永久区的回收主要针对废弃的常量和无用的类,废弃的常量指的是常量池中的常量对象没有被任何引用;而类的“无用”判定则要同时满足三个条件:1.该类所有的实例已经被回收,即Java堆中不存在该类的任何实例;2.加载该类的ClassLoader已经被回收;3.该类对应的 java.lang.Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。 至于是否真要回收无用的类,可以通过Java虚拟机的参数配置来决定,具体的配置参数我忘记,楼主可以百度一下。 一般来说,JVM 在运行过程中,类的数量是不会无限增加的,类加载一次就完了,而对象则在不停的创建和回收。所以 PermGen 空间的增加被视为是可控的。Java8 里 PermGen 就要取消了。记得好像是要被合并到Heap里。类回收的问题可能会改善。由于现在基于JVM的动态语言大量出现,还有诸如热部署等等需求,经常会产生大量类,因此类的回收问题,PermGen问题,也就逐渐突现出来了。 请教高手一个正则问题!!!!!!! 急求Java应用RXTX写的串口通信的程序实例 找不到jni.h 如何print Array? 关于SocketChannel的读和写事件问题! 如何理解JAVA中带参数的方法 【新手提问】请问为什么数据库的表里面没数据,但是返回的结果集确是真呢? java调用DB2 v8.1存储过程出现错误,帮忙看帖! 大家都来帮我呀!up有分! 找不到pakage 怎么办? import myclass not exist! 为什么这个程序会产生异常? 阿里巴巴面试题的java初始化问题
2、在自定义 ClassLoader 下加载的类,当 ClassLoader 被回收时,类的定义也会被回收。
一般来说,JVM 在运行过程中,类的数量是不会无限增加的,类加载一次就完了,而对象则在不停的创建和回收。所以 PermGen 空间的增加被视为是可控的。
而类的“无用”判定则要同时满足三个条件:
1.该类所有的实例已经被回收,即Java堆中不存在该类的任何实例;
2.加载该类的ClassLoader已经被回收;
3.该类对应的 java.lang.Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。 至于是否真要回收无用的类,可以通过Java虚拟机的参数配置来决定,具体的配置参数我忘记,楼主可以百度一下。
一般来说,JVM 在运行过程中,类的数量是不会无限增加的,类加载一次就完了,而对象则在不停的创建和回收。所以 PermGen 空间的增加被视为是可控的。Java8 里 PermGen 就要取消了。记得好像是要被合并到Heap里。
类回收的问题可能会改善。由于现在基于JVM的动态语言大量出现,还有诸如热部署等等需求,经常会产生大量类,
因此类的回收问题,PermGen问题,也就逐渐突现出来了。