首页 > 其他 > 详细

java虚拟机的内存分配及管理

时间:2014-02-15 03:04:08      阅读:283      评论:0      收藏:0      [点我收藏+]

Java虚拟机内存区域分配及管理

  如题,最近正在看虚拟机方面的书,记点笔记。

区域名

存储内容

生命周期

说明

可能产生的异常类型

程序计数器

字节码执行的行序号

 线程私有

虚拟机根据程序计数器来选取下一条需要执行的字节码指令。若执行本地方法,则值为空

唯一一个没有规定异常产生的区域

       方法区

虚拟机已加载的类信息、常量、静态变量、即时编译器编译过的代码

 线程共享

区别于java堆,有一个别名叫Non-Heap(非堆)

方法区无法满足内存分配需求时抛出

OutOfMemoryError

JVM栈

Java方法运行时的局部变量表、操作栈、动态链接、方法出口等

线程私有

Java方法执行的内存模型:每个方法执行的时候都会创建一个栈帧,存储局部变量表、操作栈、动态链接、方法出口等,方法执行过程就是对应的栈帧入栈到出栈。

栈溢出StackOverflowError

内存溢出

OutOfMemoryError

本地方法栈

本地方法的局部变量表、操作栈、动态链接、方法出口等

线程私有

与java栈作用相似,区别是执行的方法是本地方法(Native Method)而不是java方法

栈溢出StackOverflowError

内存溢出

OutOfMemoryError

对象实例(几乎完全是)

线程共享,虚拟机启动时创建

逻辑连续,物理可不连续

内存溢出

OutOfMemoryError

运行时常量池

Class文件中常量池部分的编译期生成的各种字面量和符号引用,翻译出来的直接引用,类加载后放在运行时常量池中

方法区的一部分

也可以存储运行期间产生的新的常量,典型应用String类的intern()方法

内存溢出

OutOfMemoryError

直接内存

 

 

常规内存,java虚拟机外的一块频繁使用的内存区域,使用Native方法进行内存分配,然后通过一个存储在java堆里的对象来引用这块内存

内存溢出

OutOfMemoryError

java虚拟机的内存分配及管理

原文:http://www.cnblogs.com/JavatechBlog/p/3549437.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!