JDK使用永久代会触发内存回收吗?什么条件下会触发?
时间: 2024-06-06 08:10:30 浏览: 6
当JDK使用永久代时,由于永久代用于存储类的元数据和字符串常量池等信息,因此不会触发堆内存的垃圾回收。但是,由于永久代的大小有限,当加载的类或字符串常量池等信息过多时,可能会导致永久代内存溢出(OutOfMemoryError),此时会触发永久代回收。一般情况下,可以通过调整永久代的大小以避免内存溢出的问题。
相关问题
JDK1.8及其之后,什么情况下会触发full gc?并请你讲讲各种情况的特点
好的,我了解你的要求。关于您的问题,Full GC 会在 JVM 垃圾回收机制中的“新生代”和“老年代”的空间使用达到一定的比例阈值之后,才会被触发。根据不同的情况,会有以下几种情况会触发 Full GC:
1. 内存分配担保失败触发 Full GC:当程序在新生代进行内存分配时,如果新生代内存不足以容纳新对象,就会通过担保机制把新生代内存里的部分对象转移到老年代中,如果担保机制转移后还是不足,就会触发 Full GC。
2. 显式调用 System.gc() 方法触发 Full GC:由于 System.gc() 只是向 JVM 建议进行垃圾回收,并不能保证立即执行,所以不建议显式调用此方法。
3. 永久代空间满触发 Full GC:对于使用 JDK1.7 或更早版本的程序,可能会出现由于持续不断的类加载和卸载导致永久代空间不足的情况,此时会触发 Full GC,但是 JDK1.8 已经废弃了永久代,采用元数据空间来实现类存储。
4. 动态改变堆空间大小时触发 Full GC:如果程序在运行中动态改变堆空间大小,可能会触发 Full GC,因为这个操作会导致新生代和老年代分配的比例达到阈值。
总的来说,Full GC 会造成较长时间的停顿,所以应该尽量避免触发 Full GC,最好通过调整 JVM 参数来优化内存使用效率。
jdk1.8支持zgc垃圾回收器吗?
JDK 1.8 不支持 ZGC(Z Garbage Collector)垃圾回收器。ZGC 是 JDK 11 引入的一种可扩展的低延迟垃圾回收器,能够在数百兆字节至数千兆字节的堆大小下运行,并在几毫秒内完成垃圾回收。如果需要使用 ZGC 垃圾回收器,需要升级到 JDK 11 或更高版本。在 JDK 1.8 中,可以使用串行垃圾回收器、并行垃圾回收器、CMS 垃圾回收器和 G1 垃圾回收器。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)