2.JVM内部模型及优化

2.JVM内部模型及优化

1、JDK体系结构与跨平台特性介绍
JDK体系结构

在这里插入图片描述

JDK图的最上面是java的命令和工具。

下面是JRE就是java的运行时环境-支撑java运行的一些核心类库;JRE有一块重要的东西就是java虚拟机。

java跨平台特性

在这里插入图片描述

如上图可以,不论java代码部署在windows还是linux操作系统上,是由不同系统的JDK里面的jvm帮助java转换跨平台需要的指令字节码。

2、JVM内存模型深度剖析
JVM结构组成

在这里插入图片描述

栈:线程运行时JVM会分配一块内存存储线程需要的局部变量区域。

栈帧:方法运行时存放方法对应变量的一块栈帧内存区域。

一个栈区域有多快栈帧内存组成,栈帧生成顺序是从下到上的。

方法区:包含常量+静态变量+类信息

jvm为什么会设计一个程序计数器?因为多线程,假设一个线程正在执行一个代码,这时来了一个优先级更高的线程抢占了资源,另一个线程要刮起等它执行完,挂起的线程恢复时可以利用计数器恢复到程序执行的位置。

GC ROOTs根节点:线程的本地变量、静态变量、本地方法的变量等等;

堆:老年代和年轻代比例是2:1,当堆的Eden区对象存储满了之后字节码执行器会调用minor gc,经历过一次gc,分代就会加一,minor gc每执行一次没被回收的变量的分代都会加一,当加到15(最大值)时,就会被移到老年代。

3、从jvisualvm来研究下对象内存流流转模型

wind+R打开运行,输入jvisualvm,打开JDK自带的JVM分析工具,可以看到本地所有打开的jvm进程。默认情况下是没有visual GC插件的,需要在Java VisualVM 工具上安装。

在这里插入图片描述

引用变量从Eden区到S0区再到S1区,最终到old区。

4、讲透GC Root与STW机制

​ STW:Stop The World ,就是停止掉用户线程,用在在使用系统时感觉系统卡顿或者有延迟。

​ JVM:调优就是减少full gc的时间和次数。

​ 为什么设计STW机制?GC 执行时非垃圾变量在寻找相关引用,如果没有STW机制,当使用这些变量的线程执行结束,变量之间的引用断开,之前的非垃圾变量就成了垃圾变量,这是GC还没结束,相当于这次GC无效,所以在执行GC时,会执行STW。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苹水相峰

你的打赏是对我最大的肯定

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值