首页 > 其他 > 详细

jvm

时间:2021-04-08 18:11:22      阅读:23      评论:0      收藏:0      [点我收藏+]

内存模型

 

本地方法栈:c++的native方法

程序计数器:程序当前运行的位置

栈:函数当前运行过程中的临时变量(引用类型,即地址,指向堆)

以上三个是线程私有

方法区:静态方法或变量,类加载器

堆:对象

 

 

gc(垃圾回收)

 

gcroot不能删除的

栈,本地方法栈,方法区:直接或间接引用

直接或间接引用的对象

gcroot可以删除的

没有和gcroot直接或间接相连

 

gc方法

 

标记清理:先标记再清理,内存碎片

标记整理:先标记再清理,清理之后移动到空位,代价太大

复制:内存分为1区和2区,先用1区,把没有标记的复制到2区,清理1区,需要2倍内存

实际gc

young区 1:1:8

survive0

survive1

eden:新创建的对象,快满了之后用复制算法复制到survive区,两个survive区交替使用

old区

年龄>6的对象:每次gc年龄+1,满6次复制到old区

大对象

old区满了之后进行fullgc,java程序暂停,进行标记清理或者标记整理

 

 

类加载过程

 

jvm

原文:https://www.cnblogs.com/liuhaoyu999/p/14631749.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!