首页 > 其他 > 详细

JVM内存模型

时间:2019-09-11 17:55:12      阅读:108      评论:0      收藏:0      [点我收藏+]

jvm内存模型

技术分享图片
技术分享图片

程序计数器

是当前线程所执行的字节码的行号指示器,每条线程都要有一个独立的 程序计数器,这类内存也称为“线程私有”的内存。

虚拟机栈

是描述java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。
每一个方法从调用直至执行完成 的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。

本地方法栈

本地方法栈为Native方法服务

创建的对象和数组都保存在Java堆内存中,也是垃圾收集器进行垃圾收集的最重要的内存区域。
由于现代JVM采用分代收集算法, 因此Java堆从GC的角度还可以 细分为: 新生代( Eden From Survivor 和 To Survivor)和老年代。

方法区

存放已经被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据
运行时常量池和元空间是方法区的一部分

判断对象是否为垃圾的算法

1)引用计数算法(一般不用)
优点 执行效率高,程序执行受影响小
缺点 无法检测出循环引用的情况,导致内存泄漏
2)可达性分析法:通过判断对象的引用链是否可达来决定对象是否可以被回收

垃圾回收算法

1)标记-清除算法
2)复制算法
解决了碎片化问题
顺序分配内存,简单高效
适用于对象存活率低的场景
3)标记-整理
4)分代收集算法(常用)
按照对象生命周期的不同划分区域以采用不同的垃圾回收算法
新生代:采用复制算法
老年代:采用用"标记-清除"或者"标记-整理"算法
永久代(方法区):同老年区 (1.8以后已经没有)

四种引用类型

引用类型 被垃圾回收时间 用途 生存时间
强引用 从来不会 对象的一般状态 JVM停止时终止
软引用 在内存不足时 对象缓存 内存不足时终止
弱引用 垃圾回收时 对象缓存 Gc运行后终止
虚引用 不确定 标记、哨兵 不确定

JVM内存模型

原文:https://www.cnblogs.com/flyuz/p/11507605.html

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