GC Roots
2016-01-19 10:59
741 查看
GC Roots
被称为 GC(Garbage Collector) Roots 实际上是垃圾回收器需要回收的对象。垃圾回收器回收那些不是 GC Roots 的对象并且不再被GC Roots引用的对象。这里有几种可以作为 GC Roots 的对象。一个对象可以属于多种类型的 Root。有以下几种类型的 Root 对象。
Class-通过系统的类加载器加载的class。这种class是不可能被卸载的。它们可以通过静态数据域引用对象。这里需要注意的是,通过用户自定义的类加载器加载的Class并不能作为 GC Roots,除非相应的 java.lang.Class 的实例恰巧成为 GC Roots 对象。
Thrad-存活的线程
Stack LocalJava 方法中的变量或者方法形参
JNI Local-JNI方法中的变量或者方法形参
JNI Global-全局 JNI引用
Monitor Used-用于同步监控的对象
Held by JVM-JVM由于一些原因会从垃圾回收器中持有一些对象的引用。实际上,这里和 JVM本身的实现有关。一些可能的已知原因是,系统的类加载器,一些jvm自身已知的异常类,一些预分配的异常处理对象,正在加载类的自定义类加载器。很不爽的是,JVM基本没有提供额外的细节去描述这些对象。因此,这仅仅能通过分析去判断哪些对象是所谓的 JVM持有的。
如果一个对象是一个 GC Roots 对象,在所有的视图中它都会被特别的标记来表明它是一个独立的对象。下面这张图展示了一个 Fragment 中的对象视图路径
相关文章推荐
- writeb(), writew(), writel(),readb(), readw(), readl() 宏函数
- linux的mount(挂载)命令详解
- 【转】ios输入框被键盘挡住的解决办法
- exports 和 module.exports 的区别
- semanage: 未找到命令
- DataGuard主备归档存在gap的处理办法
- android基本架构
- Mysql 常见问题
- mac通过终端命令删除文件
- Android的传感器开发技术
- QuartzCore框架学习-CAEmitterLayer
- Apache的httpd命令详解
- Cesium之3D拉伸显示行政区含GeoJSON数据生成过程GDAL的ogr2ogr
- 【Leetcode】之Trapping Rain Water
- ant
- 向上转型和向下转型
- JavaSE入门学习3:搭建Java开发环境(一)
- Flex 布局教程:实例篇
- 细说new与malloc的10点区别
- 给节点设置tag【从零開始cocos3.0final 】