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

java 内存区域

时间:2018-12-18 02:34:54      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:相同   允许   因此   生命周期   执行   虚拟机   多线程   共享   实例   

根据 java虚拟机规范 的规定,java虚拟机所管理的内存会包括以下几个运行时数据区域:堆,方法区,程序计数器,虚拟机栈,本地方法栈

程序计数器:当前线程所执行的字节码的行号,程序执行时根据行号获取下一条指令(通俗的讲,就是指令执行到什么位置)

因为java虚拟机多线程是CPU切换时间片执行,因此每个线程拥有自己的程序计数器,各个线程的程序计数器相互独立,这样在切换时间片执行相应线程时才能根据

自身的程序计数器恢复到正常状态,继续执行

java虚拟机栈:线程私有,生命周期与线程相同,主要作用是保存方法执行时的局部变量,所需内存大小在编译期间分配

本地方法栈:执行本地方法时保存本地方法产生的局部变量的内存(与java虚拟机栈的区别为:java虚拟机栈 是执行java方法时保存临时变量的空间)

当栈的深度超过虚拟机允许的最大深度时StackOverflowError(递归次数过多可能会产生这个问题),当栈空间无法扩展,超过限制时:OOM  OutOfMemoryError

java堆:保存对象实例,数组, 线程共享

方法区:线程共享,存放 虚拟机加载的类信息,常量,静态变量

 

java 内存区域

标签:相同   允许   因此   生命周期   执行   虚拟机   多线程   共享   实例   

原文地址:https://www.cnblogs.com/byebyebird/p/10134549.html

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