码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-05-03 00:57:51      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:分享   tac   管理   ack   分享图片   循环   out   解释   空间   

java虚拟机栈的理解

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

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

技术分享图片

模拟栈内存溢出

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

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

技术分享图片

栈内存溢出解释:

 技术分享图片

 

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

标签:分享   tac   管理   ack   分享图片   循环   out   解释   空间   

原文地址:https://www.cnblogs.com/zhulibin2012/p/8983281.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!