深入理解java虚拟机---java虚拟机内存管理

Posted zhulibin2012

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解java虚拟机---java虚拟机内存管理相关的知识,希望对你有一定的参考价值。

java虚拟机栈的理解

虚拟机栈就是我们所熟知的栈内存,栈内存属于线程独有的.而在栈内存中的局部变量表中存储的引用类型只是存储对象的内存地址.对象的创建在堆内存中,即对象在线程共享区中.

局部变量表: 局部变量表的内存空间在编译时期完成分配,用于存放编译期间可知的各种基本数据类型,引用类型以及returnAdress类型.就是我们所熟知的栈内存.

模拟栈内存溢出

 当在一个线程中不停的死循环调用一个方法时,因为方法的执行会在帧分配固定内存的大小,所以不停调用方法(前一个方法未执行完成弹出栈),会在帧中不断的创建固定大小的内存.这样就会导致

stackOverFlowError错误报出.如果不给每个线程的栈内存限定大小,那么当栈中无法向虚拟机要内存时,就会报错outMemoryerrror. 模拟代码如下:

栈内存溢出解释:

 

 

以上是关于深入理解java虚拟机---java虚拟机内存管理的主要内容,如果未能解决你的问题,请参考以下文章

深入理解Java虚拟机—内存管理机制

回顾《深入理解 Java 虚拟机》之 Java 内存区域

深入理解Java虚拟机:JVM内存管理与垃圾收集理论

深入理解Java虚拟机——java内存区域与内存溢出异常

深入理解Java虚拟机的目录

深入理解java虚拟机系列:java内存区域与内存溢出异常