Java内存模型深度剖析

2021-02-17  本文已影响0人  蓝汀华韶

1、Java整体结构与内存模型

clipboard.png

1)虚拟机栈

一个线程对应一个虚拟机栈,虚拟机栈里存放的就是一个个栈帧,一个方法对应一个栈帧,每一个方法的调用过程对应着栈帧在虚拟机栈类入栈到出栈的过程

clipboard.png

栈帧结构

2)本地方法栈:本地方法信息,线程独有

3)元空间(方法区):线程共享

4)堆:保存对象和数组实例,线程共享

5)程序计数器:保存当前执行指令地址,线程独有

2、JVM内存参数设置

clipboard.png

Spring Boot程序的JVM参数设置格式(Tomcat启动直接加在bin目录下catalina.sh文件里):

java ‐Xms2048M ‐Xmx2048M ‐Xmn1024M ‐Xss512K ‐XX:MetaspaceSize=256M ‐XX:MaxMetaspaceSize=256M ‐jar microservice‐eurek a‐server.jar

3、逃逸分析

1)定义:Java Hotspot 虚拟机可以分析新创建对象的使用范围,并决定是否在 Java 堆上分配内存的一项技术。

2)对象逃逸状态

3)逃逸分析优化

如果一个对象没有发生逃逸,那边它的作用域只有在当前方法类,那么JVM不会在在堆中创建对象,而是会在栈或寄存器上创建它用到的成员标量,这样在方法结束时这些成员标量直接回收了,不需要经历垃圾回收。

参考:https://www.cnblogs.com/javastack/p/11023044.html

上一篇下一篇

猜你喜欢

热点阅读