码迷,mamicode.com
首页 > 其他好文 > 详细

JVM运行时数据区

时间:2014-12-10 21:21:10      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:java   jvm   运行时   数据区   

本篇主要介绍一下,JVM运行时数据区的内容。

首先大概介绍一下下图所示的内容。JVM运行时数据区主要分为了两大部分的内容:线程共有的方法区(Method Area)和堆(Heap)、线程私有的虚拟机栈(VM Stack),本地方法栈(Native Method Stack)和程序计数器(Program Counter Register)。在数据区下面的执行引擎中又包含了:即时编译器(JITCompiler)和垃圾收集器(GC)。GC主要用于回收线程共享的区域(方法区和堆),对于私有的内存区域则方法执行完毕后系统自动释放。(在实际的程序当中,线程私有的内存区域会有很多份)

对于整个运行时数据区而言,外部交互的模块有执行引擎、本地库接口和类加载器。

bubuko.com,布布扣

JVM运行时数据区(图片来源


下面分别介绍一下,各个内存区域的详细信息。

1、程序计数器(Program Counter Register [私有]):是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。① (此内存区域是唯一一个在JVM规范中没有规定任何OutOfMemoryError的区域)

2、JVM栈(Java Virtual Machine Stacks [私有]):每个方法在执行的时候都会同时创建一个栈帧。JVM栈中包含了:局部变量表、操作栈、动态链接、方法出口等信息。

3、本地方法栈(Native Method Stacks [私有]):其内存结构类似于JVM栈,不过使用到的是本地库接口。

4、堆(Heap [共享]):堆区域是JVM内存管理里面最大的一块,几乎所有通过new出来的对象都放在此区域。在GC的过程中,绝大部分的内存回收发生在此区域。

5、方法区(Method Area [共享]):方法区主要用于存储被JVM加载的类信息、常量、静态变量、即时编译后的代码等。

6、运行时常量池(Runtime Constant Pool [方法区组成部分]):用于存放编译器生成的各种字面量和符号引用。




JVM运行时数据区

标签:java   jvm   运行时   数据区   

原文地址:http://blog.csdn.net/fouy_yun/article/details/41849805

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