vlambda博客
学习文章列表

Gc算法,永久代对象如何GC,GC有环怎么处理?


Gc算法,永久代对象如何GC,GC有环怎么处理?
永久代GC的原因:

  · 永久代空间已经满了

  ·  调用了System.gc(0
注意:这种GC是full GC堆空间也会一并被GC一次Gc
有环怎么处理
1.根搜索算法

什么是根搜索算法

垃圾回收器从被称为GC Roots的点开始遍历遍历对象,凡是可以达到的点都会标记为存活,堆中不可到达的对象都会标记成垃圾,然后被清理掉。
GC Roots有哪些
  · 类,由系统类加载器加载的类。这些类从不会被卸载,它们可以通过静态属性的方式持有对象
的引用。
      注意,一般情况下由自定义的类加载器加载的类不能成为GC Roots。
  · 线程,存活的线程
  · Java方法栈中的局部变量或者参数。
  · JNI方法栈中的局部变量或者参数。JN全局引用
  · 用做同步监控的对象
被JVM持有的对象,这些对象由于特殊的目的不被GC回收。这些对象可能是系统的类加载器,一些重要的异常处理类,一些为处理异常预留的对象,以及一些正在执行类加载的自定义的类加载器。但是具体有哪些前面提到的对象依赖于具体的VM实现。
2.如何处理

基于引用对象遍历的垃圾回收器可以处理循环引用,只要是涉及到的对象不能从GCRoots强引用可到达,垃圾回收器都会进行清理来释放内存。 




在 Java大蜗牛 还有更多优质的干货文章,欢迎分享给其它同学!Gc算法,永久代对象如何GC,GC有环怎么处理?

 
   
   
 
Gc算法,永久代对象如何GC,GC有环怎么处理?
扫码关注【 Java大蜗牛
设为星标,第一时间收到更新Gc算法,永久代对象如何GC,GC有环怎么处理?
咱们下期见!
感谢阅读,帮忙点个赞 + 在看吧