码迷,mamicode.com
首页 > 其他好文 > 详细

JVM垃圾回收机制

时间:2014-09-09 13:48:59      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:垃圾回收   虚拟机   public   java   寄存器   

bubuko.com,布布扣


jvm虚拟机栈:一个是线程独有的,每次启动一个线程,就创建一个jvm虚拟机栈,线程退出的时候就销毁。这里面主要保存线程本地变量名和局部变量值。

本地方法栈: 调用本地jni方法的时候而创建的。这里分配的jvm之外的内存空间。方法调用结束之后销毁。

pc寄存器 : 这个保存线程当前执行的字节码指令

堆:主要保存创建的对象。

方法区:保存class相关的信息。主要是class的一个内存结构信息

常量池:方法区的一部分,主要保存class内存结构中常量值 例如String值,public static final 类型的值

我们这里说的垃圾回收,主要是java虚拟机对堆内存区域的回收


1 首先的问题是:jvm如何知道哪些对象需要回收 ?

     目前有两种算法

· 引用计数法

     

· root搜索算法

     以下对象会被认为是root对象:

· 被启动类(bootstrap加载器)加载的类和创建的对象

· jvm运行时方法区类静态变量(static)引用的对象

· jvm运行时方法去常量池引用的对象

· jvm当前运行线程中的虚拟机栈变量表引用的对象

· 本地方法栈中(jni)引用的对象



基本上 jvm内存回收有三种 基本算法

   


· 标记-清除

bubuko.com,布布扣


· 标记-清除-压缩


bubuko.com,布布扣





· 标记-清除-复制


bubuko.com,布布扣







本文出自 “android开发” 博客,请务必保留此出处http://9238253.blog.51cto.com/9228253/1549890

JVM垃圾回收机制

标签:垃圾回收   虚拟机   public   java   寄存器   

原文地址:http://9238253.blog.51cto.com/9228253/1549890

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!