沈超琦的博客

STAY HUNGRY,STAY FOOLISH

文章

JVM内存结构(基于JDK8)

根据VM规范,VM应该被划分为五块区域——即VM栈、堆、方法区、程序计数器、本地方法栈五个部分。如下图所示: 方法区(Method Area):该区域是所有线程共享的,主要用于存放类的信息,常量、静态变量、即时编译器编译后的代码等。垃圾回收器对这块区域的回收主要是针对常量池和类的卸载。 java堆(Java Heap):该区域也是所有线程共享的,用于存放对象实例,绝大多数创建的对象都会被存放到这里(除了部分由于逃逸分析而在对外分配的对象,该部分只是在方法体被引用,故被分配到了栈上)。垃圾回收器最主要针对的对象,对这部分的回收效率影响了VM的整体性能。 本地方法栈(Native Methiod Stack):该区域是每个线程锁独有的,主要用于VM的Native方法。这部分是有VM自行管理,程序员基本上不需要关系该部分。 VM栈(VM Stack):该区域也是每个线程所独有的,与本地方法栈是类似的,唯一的区别是它为VM执行Java方法服务。该区域主要维护栈针(每调用一个方法,则VM就会创建一个栈针保护当前方法的状态,并将其压入栈中,当被调用的方法完成后,在将其出栈继续执行未完成的方法),....

STAY HUNGRY,STAY FOOLISH

© 2021 沈超琦的博客

Powered by Bolo
Theme self-bolo-sakura by Mashiro
浏览 31162 文章 31 评论 5
浙ICP备18010929号

主题 | Theme