深入理解Java 虚拟机(周志明)笔记(二)——Java数据分区
来源:互联网 发布:qq飞车改装30雷诺数据 编辑:程序博客网 时间:2024/05/21 19:50
JVM运行时(一个处理器(的一个核)执行一条线程)数据分区
1.线程共享的区(数据被处理器各线程共享,即各线程共有的区)
a.方法区(Method Area):存储已被虚拟机加载的类信息、常量、静态变量、即使编译器编译后的代码。(Class文件信息)
常量池:存放编译时生成的各种字面量和引用。在类加载后数据进入运行时常量池。 例如通过 String str=“aba” 参数的字符串。
运行时常量池:存储运行时产生的常量数据或引用。 如通过String类的intern()方法产生新的常量
b.堆(Heap):1.对大多数应用堆是虚拟机所管理的内存中最大的一块
2.存储所有的对象实例
3.Java堆是垃圾收集器管理的主要区域,因此也被称为“GC堆”。
c.执行引擎:
d.本地库接口
e.本地方法库:
2.线程私有的区(数据被各处理器线程私有,其他线程不可访问,即各线程都有自己独占的区,生命周期与线程相同)
a.虚拟机栈(VM Stack):1.为虚拟机执行Java方法(字节码)服务
2.每个方法执行时需存储的数据(局部变量表,操作数栈,动态链接,方法出口) 局部数据
局部变量表:编译时可知的基本数据类型和引用类型
方法所需局部变量空间大小在编译时计算,运行时不变
异常状况:1.StackOverflowError:线程请求的栈深度大于虚拟机允许的深度
2.OutOfMemoryError:无法申请到足够的内存
b.本地方法栈(Native Method Stack):1.为虚拟机执行Native方法服务
2.使用方法与虚拟机栈类似
c.程序计数器:当前线程嗦执行的字节码的行号,字节码解释器通过修改该值来进行字节码指令(类似于Cpu的程序计数器).
3.直接内存:1.由Native函数库直接分配堆外内存
2.应用:NIO类 使用一种基于通道和缓冲区的I/O方式,分配直接内存,通过在堆中存储DirectByteBuffer对象作为直接内存的引用。
这样避免了在堆和Native堆中来回复制数据
1.线程共享的区(数据被处理器各线程共享,即各线程共有的区)
a.方法区(Method Area):存储已被虚拟机加载的类信息、常量、静态变量、即使编译器编译后的代码。(Class文件信息)
常量池:存放编译时生成的各种字面量和引用。在类加载后数据进入运行时常量池。 例如通过 String str=“aba” 参数的字符串。
运行时常量池:存储运行时产生的常量数据或引用。 如通过String类的intern()方法产生新的常量
b.堆(Heap):1.对大多数应用堆是虚拟机所管理的内存中最大的一块
2.存储所有的对象实例
3.Java堆是垃圾收集器管理的主要区域,因此也被称为“GC堆”。
c.执行引擎:
d.本地库接口
e.本地方法库:
2.线程私有的区(数据被各处理器线程私有,其他线程不可访问,即各线程都有自己独占的区,生命周期与线程相同)
a.虚拟机栈(VM Stack):1.为虚拟机执行Java方法(字节码)服务
2.每个方法执行时需存储的数据(局部变量表,操作数栈,动态链接,方法出口) 局部数据
局部变量表:编译时可知的基本数据类型和引用类型
方法所需局部变量空间大小在编译时计算,运行时不变
异常状况:1.StackOverflowError:线程请求的栈深度大于虚拟机允许的深度
2.OutOfMemoryError:无法申请到足够的内存
b.本地方法栈(Native Method Stack):1.为虚拟机执行Native方法服务
2.使用方法与虚拟机栈类似
c.程序计数器:当前线程嗦执行的字节码的行号,字节码解释器通过修改该值来进行字节码指令(类似于Cpu的程序计数器).
3.直接内存:1.由Native函数库直接分配堆外内存
2.应用:NIO类 使用一种基于通道和缓冲区的I/O方式,分配直接内存,通过在堆中存储DirectByteBuffer对象作为直接内存的引用。
这样避免了在堆和Native堆中来回复制数据
0 0
- 深入理解Java 虚拟机(周志明)笔记(二)——Java数据分区
- 深入理解java虚拟机学习笔记(二)
- 深入理解Java 虚拟机(周志明)笔记(五)——垃圾收集器(二)
- 《深入理解JAVA虚拟机》笔记之JVM分区
- 《深入理解java虚拟机》学习笔记(2)——java虚拟机运行时数据区域
- 深入理解Java 虚拟机(周志明)笔记(一)——Java虚拟机发展史
- Java内存模型——《深入理解Java虚拟机》笔记
- 《深入理解JAVA虚拟机》笔记2——走近java
- 《深入理解java虚拟机》学习笔记10——并发编程(二)
- 《深入理解java虚拟机》学习笔记10——并发编程(二)
- 深入理解Java虚拟机学习笔记——二、垃圾收集器与内存分配策略
- 《深入理解JAVA虚拟机》笔记
- 《深入理解JAVA虚拟机》笔记
- 《深入理解Java虚拟机》笔记
- 《深入理解Java虚拟机》笔记
- 《深入理解JAVA虚拟机》笔记
- 《深入理解Java虚拟机》笔记
- 《深入理解Java虚拟机》笔记
- Android 那些坑
- android_activity隐式意图跳转到浏览器和短信的界面
- 读《股票操盘手记》手机版
- 开源大数据查询分析引擎现状
- 今天开通博客,记录一下IOS学习历程
- 深入理解Java 虚拟机(周志明)笔记(二)——Java数据分区
- Linux 可加载内核模块剖析 (2.6 内核透视图)
- 遍历SD卡,获取含有图片文件的文件夹集合
- codeforces #345 div.2 A Joysticks
- 深入理解Java 虚拟机(周志明)笔记(三)——Java对象在内存中的存储与访问
- jQuery源码分析系列(30) : Ajax 整体结构
- PyQt4入门教程(6)_对话框
- 企业会计学
- 新手融入linux项目开发的必过关------编译工程代码