JVM的内存区域具体包括哪些部分?
摘要:原创文章,转载请标明出处!https:www.cnblogs.comboyceleep14095080.html 一、背景二、运行时内存区域概述1、官方描述2、中文翻译3、内存区域简述4、运行时数据区简图5、运行时数据区详图三、J
原创文章,转载请标明出处!https://www.cnblogs.com/boycelee/p/14095080.html
一、背景二、运行时内存区域概述1、官方描述2、中文翻译3、内存区域简述4、运行时数据区简图5、运行时数据区详图三、JVM线程JVM数据区域与线程关系1、官方描述2、中文解释3、关系图四、PC寄存器1、官方解释2、中文翻译3、概述3、什么是上下文切换?4、什么是CPU时间片?5、为什么PC寄存器是“线程私有”的?五、虚拟机栈1、官方解释2、中文解释3、概述4、栈的结构5、栈的存储6、栈的运行原理7、局部变量表8、操作数栈9、栈顶缓存10、动态链接11、方法返回地址六、本地方法栈1、官方解释2、中文翻译3、概述4、代码示例七、堆空间1、官方描述2、中文翻译3、概述4、堆、栈和方法区的关系5、TLAB6、逃逸分析7、逃逸分析-代码优化八、方法区1、官方解释2、中文解释3、概述4、方法区结构5、方法区变化6、常量池与运行时常量池7、为什么使用元空间替换永久代?8、为什么将字符串常量池移至堆空间?9、方法区垃圾回收九、直接内存1、概述十、对象实例化过程1、对象实例化2、内存布局3、对象访问十一、参考十二、最后
一、背景
相对于C/C++C程序员,Java程序员会相对轻松一些,因为Java虚拟机的内存管理机制会管理内存,不需要开发人员手动进行内存管理,也不容易出现内存泄露和内存溢出的。但如果不了解虚拟机如何管理内存,在内存出现问题时就会束手无策,所以学习虚拟机如何管理内存也是一件必要的事情。
二、运行时内存区域概述
1、官方描述
The Java Virtual Machine defines various run-time data areas that are used during execution of a program.
2、中文翻译
Java虚拟机定义了在程序运行期间的各种运行时数据区域。
3、内存区域简述
在《Java虚拟机规范》中运行时数据区域会包括PC寄存器、Java虚拟机栈、堆、方法区、运行常量池、本地方法栈。因为运行时常量池是方法区的一部分,所以本篇文章将常量池放在方法区章节中的子节来讲解。
4、运行时数据区简图
JVM-运行时数据区简图
5、运行时数据区详图
JVM-运行时数据区详图
三、JVM线程
JVM数据区域与线程关系
1、官方描述
Some of these data areas are created on Java Virtual Machine start-up and are destroyed only when the Java Virtual Machine exits. Other data areas are per thread. Per-thread data areas are created when a thread is created and destroyed when the thread exits.
2、中文解释
一部分数据区域与虚拟机进程同生共死,另一部分数据区域与线程同生共死。
