首页 > 代码库 > JVM垃圾回收机制
JVM垃圾回收机制
jvm虚拟机栈:一个是线程独有的,每次启动一个线程,就创建一个jvm虚拟机栈,线程退出的时候就销毁。这里面主要保存线程本地变量名和局部变量值。
本地方法栈: 调用本地jni方法的时候而创建的。这里分配的jvm之外的内存空间。方法调用结束之后销毁。
pc寄存器 : 这个保存线程当前执行的字节码指令
堆:主要保存创建的对象。
方法区:保存class相关的信息。主要是class的一个内存结构信息
常量池:方法区的一部分,主要保存class内存结构中常量值 例如String值,public static final 类型的值
我们这里说的垃圾回收,主要是java虚拟机对堆内存区域的回收。
1 首先的问题是:jvm如何知道哪些对象需要回收 ?
目前有两种算法
· 引用计数法
· root搜索算法
以下对象会被认为是root对象:
· 被启动类(bootstrap加载器)加载的类和创建的对象
· jvm运行时方法区类静态变量(static)引用的对象
· jvm运行时方法去常量池引用的对象
· jvm当前运行线程中的虚拟机栈变量表引用的对象
· 本地方法栈中(jni)引用的对象
基本上 jvm内存回收有三种 基本算法
· 标记-清除
· 标记-清除-压缩
· 标记-清除-复制
本文出自 “android开发” 博客,请务必保留此出处http://9238253.blog.51cto.com/9228253/1549890
JVM垃圾回收机制
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。