《深入理解java虚拟机》读书笔记一 【java内存区域】
来源:互联网 发布:sql declare 编辑:程序博客网 时间:2024/06/05 15:57
一、运行时数据区域 Runtime Data Areas
线程私有:线程之间互不影响,彼此独立,生命周期与线程相同。
1. 程序计数器 The pc Register
线程私有
if java方法,value = 正在执行的虚拟机字节码指令的地址
if native方法,value = undefined
2. java虚拟机栈 The Virtual Machine Stacks
线程私有,存储栈帧(Stack Frames), 内存可以不连续,可动态扩展,java方法执行的内存模型
StackOverflowError:一个线程请求的栈深度大于虚拟机所允许的深度
OutOfMemoryError:扩展时无法申请到足够内存,或没有足够内存为新线程初始化虚拟机栈
3. 本地方法栈 Native Method Stacks
和虚拟机栈相似
4. java 堆 Heap
线程共享,存储对象和数组,Garbage Collector管理的主要区域,内存可以不连续,可动态扩展
OutOfMemoryError:the automatic storage management system can't allocate more heap for program apply
5. 方法区 Method Area
线程共享,Permanent Generation永久代,存储已加载的类信息、常量、静态变量、即时编译器编译后的代码,Non-Heap堆的一个逻辑部分,GC回收常量池和类型卸载,内存可以不连续,可动态扩展
OutOfMemoryError:无法满足内存分配需求
6. 运行时常量池 Runtime Constant Pool
方法区的一部分,存储编译期生成的各种字面量和符号引用,动态性
OutOfMemoryError:无法满足内存分配需求
7.直接内存Direct Memory
二、对象访问
Object object = new Object();
代码出现在方法区中
两种对象访问方式:
>使用句柄:reference中存储稳定的句柄地址,在对象被移动时只会改变句柄中的实例数据指针,而reference本身不需要被修改
>使用直接指针:速度更快,节省了一次指针定位的时间开销。
阅读全文
0 0
- 《深入理解java虚拟机》读书笔记一 【java内存区域】
- 深入理解JAVA虚拟机读书笔记之JAVA内存区域
- 《深入理解Java虚拟机》读书笔记之Java内存区域
- 《深入理解java虚拟机》读书笔记:java内存区域
- 《深入理解java虚拟机》读书笔记——jvm内存区域
- 深入了解Java虚拟机读书笔记(一)JVM内存区域
- 《深入理解Java虚拟机》学习笔记一:Java内存区域
- 深入理解Java虚拟机--java内存区域
- Java内存区域---深入理解Java虚拟机
- 《深入理解java虚拟机》-java内存区域
- 深入理解java虚拟机-java内存区域
- 深入理解Java虚拟机笔记---内存区域
- 深入理解Java虚拟机笔记---内存区域
- 《深入理解Java虚拟机》读书笔记---第二章 Java内存区域与内存溢出异常
- 《深入理解Java虚拟机》读书笔记1——Java内存区域与内存溢出异常
- 深入理解JAVA虚拟机读书笔记之Java内存区域与内存溢出异常
- 《深入理解Java虚拟机》读书笔记——Java内存区域与内存溢出异常
- 深入理解java虚拟机-读书笔记1-Java内存区域与内存溢出异常
- webservice客户端使用jdk自带wsimport实现方案
- Spring小记
- LOCAL_PRIVILEGED_MODULE 详解(2)
- 你必须理解的计算机核心概念
- Excel上传并解析(java)
- 《深入理解java虚拟机》读书笔记一 【java内存区域】
- 双边滤波
- noip2012 同余方程 关于gcd及exgcd
- CUDA PTX ISA阅读笔记(一)
- 2159. Ancient Cipher
- TYVJ1463 智商问题【数据结构】【分块】
- 走近比特币:一个故事看懂“区块链”
- OpenCV学习(一、读视频)
- nginx的平滑升级,不间断服务