java runtime类 heap_Java 进阶(一) JVM运行时内存模型
1.JVM运行时数据区域的划分
a.程序计数器(Program Counter Register)
一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。每个线程拥有独立的一个计数器,如果当前执行的是Native方法,则计数器值为空。
b.JVM栈(Java Virtual Machine Stack)
描述Java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧(Stacks Frame)用于存储局部变量表,操作数栈,动态链接,方法出口等信息。
每一个方法从调用直至执行完成的过程,就对应一个栈帧在JVM栈中入栈到出栈的过程。
c.本地方法栈(Native Method Stack)
与JVM栈发挥的作用非常相似,区别不过是JVM栈为JVM执行Java方法服务,而本地方法栈为JVM使用到的Native方法服务。
d.Java堆(Java Heap)
Java堆是被所有线程共享的一块内存区域,在JVM启动时创建。所有的对象实例以及数组都要在这里分配内存,但是随着JIT编译器的发展,渐渐变得不是那么绝对了。
e.方法区(Method Area)
存储已被JVM加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。
虽然JVM规范把方法区描述为堆的一个逻辑部分,但它却有一个别名叫做Non-Heap。
f.运行时常量池(Runtime Constant Pool)
方法区的一部分。Class文件中除了有类的版本,字段,方法,接口等描述信息外,还有一项是常量池,用于存放编译器生成的各种字面量和符号引用。
g.直接内存(Direct Memory)
不是JVM运行时数据区的一部分,也不是JVM规范中定义的内存区域。
例如:JDK1.4中新引入的NIO(New Input/Output)类,一种基于通道与缓冲区的I/O方式,可以使用Native函数库直接操作堆外内存,然后通过存储在Java堆中的DirectByteBuffer对象作为这块内存的引用,避免了在Java堆和Native堆中来回复制数据。
java runtime类 heap_Java 进阶(一) JVM运行时内存模型相关推荐
- [转]JVM运行时内存结构
[转]http://www.cnblogs.com/dolphin0520/p/3783345.html 目录[-] 1.为什么会有年轻代 2.年轻代中的GC 3.一个对象的这一辈子 4.有关年轻代的 ...
- 尝试用HSDB分析JVM运行时内存理解Java多态实现机制
测试代码 // 接口 package ziya; public interface TestParent {void show(); }package ziya; public class Paren ...
- JVM运行时内存概念-堆栈及新生代、老年代、持久代
JVM内存有一些按不同标准划分的概念,这里来理清一下. 一.首先java虚拟机规范定义了java运行时数据区在概念上应该有的分区,这是抽象概念不对应也不限制物理上的具体实现,不同的虚拟机可以有不同的实 ...
- java运行时内存模型
运行时内存分为: 1.方法区 2.堆 3.虚拟机栈 4.本地方法栈 5.程序计数器 方法区.堆是共享的,所有线程都可以读取 虚拟机栈.本地方法栈.程序计数器是线程私有的,每个线程单独一套,它们在线程创 ...
- 三年Java开发,你连基础的JVM运行时内存布局都忘了
面:为什么要使用双亲委派机制去加载类? 答:避免多份同样字节码的加载,浪费内存. 类的加载方式 隐式加载:new 显示加载:loadClass.forName等 类的装载过程如下图: 面:loadCl ...
- jvm内存模型和java内存模型_JVM运行时内存模型综述
JVM内存模型 JVM分为五个区域:虚拟机栈.本地方法栈.方法区.堆.程序计数器. JVM不同区域的占用内存大小不同,一般情况下堆最大,程序计数器较小. JVM五个区中虚拟机栈.本地方法栈.程序计数器 ...
- 在没有任何数据时进行无效的读取尝试。_技术转载——JVM运行时内存是怎么分布的?...
写在前面:2020年面试必备的Java后端进阶面试题总结了一份复习指南在Github上,内容详细,图文并茂,有需要学习的朋友可以Star一下! GitHub地址:https://github.com/ ...
- JVM运行时内存分区
什么是JVM?JVM概述--初识JVM(类加载器,垃圾回收器,执行引擎) 上一篇博客我们对jvm以及它的三个"部件"有了初步的认识,这一篇我们探讨一下源码经过编译.加载后这些数据被 ...
- JVM 运行时内存空间详解——元空间
通过上一篇文章,我们大体了解了JVM的整体架构,其分为:元数据(JDK7是方法区).堆.虚拟机栈.本地方法栈.程序计数器几个部分. 本篇文章,咱们对元空间进行剖析,一探究竟. 1. 元空间介绍 在JD ...
最新文章
- android support design library eclipse,Eclipse下使用Android Design Support Library中的控件
- [密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]45.描述一些对抗RSA侧信道攻击的防御方法
- JavaScript-严格检查模式
- poi处理excel导出
- chrome鼠标手势_Chrome插件推荐——第一弹
- 进入全屏 nodejs+express+mysql实现restful风格的增删改查示例
- Eclipse中不使用内嵌Maven
- 算法-冒泡排序和快速排序
- 区块链 分片技术和闪电网络区别
- 【分治】寻找主元素的3种算法
- [转]什么是UAT测试?
- JSON转EXCEL代码( java)
- Linux快捷键及命令
- 报告:使用加密货币进行跨境汇款的人数越来越多
- mac word2016 去除页眉下面的横线
- Word中的公式编辑器插入自动编号公式时,隐藏必要的分章节字符串的办法
- eclipse插件升级
- 5个文献免费下载神器
- 白盒测试模板用例:三角形测试
- android之按钮添加声音