JVM内存结构学习整理
来源:互联网 发布:淘宝怎么改收货地址 编辑:程序博客网 时间:2024/04/29 21:13
JVM内存结构学习整理
一、JVM是Java Virtual Machine(Java虚拟机)的缩写,不同平台上的JVM都是不同的,但向编译器提供相同的接口,编译器面向JVM生成JVM可以理解的.class字节码文件,对应平台的JVM对.class文件进行解释执行生成与该平台对应的机器码,JVM屏蔽了与具体操作系统平台相关的信息,在java跨平台实现中起到转换器的作用。
二、Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。
1、 指令集
。。。。。。。。。。。。
2、 寄存器
用于保存系统状态和处理器所需信息,如指令、计数存储
3、 java栈(JAVA STACK):编译时由JDK编译器为方法分配
a)Java栈是JVM存储信息的主要方法。当JVM得到一个Java字节码应用程序后,便为该代码中一个类的每一个方法创建一个栈框架(分配内存空间,运行期间不会改变内存大小),以保存该方法的状态信息。栈是线程私有的、存储局部变量表、操作栈、动态链接、方法的状态信息、出口(非方法字节码)
b)【局部变量表:局部变量表存放了编译期可知的各种基本数据类型(boolean、byte、char、short、int、float、long、double)、对象引用等】
c)在Java 虚拟机规范中,对这个区域规定了两种异常状况:如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError 异常;如果虚拟机栈可以动态扩展,当扩展时无法申请到足够的内存时会抛出OutOfMemoryError 异常。
d)Stack的大小限制着线程的数量,通过设置-Xss参数决定Stack大小,过大过小都容易导致stack泄露
4、 堆(heap):运行时由JVM解释器为对象实例分配
a)Java的堆内存是一个运行时数据区,用以保存类的实例,JVM的对内存中存储着正在运行的应用程序所建立的所有对象(数组也分配在此区域),是垃圾回收器GC主要管理的区域,是线程共享的
b)通过设置-Xmx和-Xms 控制堆内存大小。如果在堆中没有内存完成实例分配,并且堆也无法再扩展时,将会抛出OutOfMemoryError 异常。
5、 存储方法域(method area存储区或方法区):运行时由JVM解释器分配,依赖于具体平台的实现方式。
a)JVM有两类存储区:常量缓冲池和方法区。常量缓冲池用于存储类名称、方法名称和字段名称、静态变量以及串常量。方法区则用于存储Java方法的字节码、即时编译器编译后的代码
b)当此区域无法满足内存分配需求时, 将抛出OutOfMemoryError 异常。
本文参考:http://blog.chinaunix.net/uid-9789791-id-3350463.html
http://baike.baidu.com/link?url=mHbm8NgmTd3upczFjyIhM-1Q6Rps4_TRJ9kuZEAvfnDU__fSJ8Pz9drsc5qBiLyc
- JVM内存结构学习整理
- JVM内存结构分析整理
- JVM内存管理学习整理
- JVM内存管理学习整理
- JVM学习之-JVM内存结构
- JVM学习之-JVM内存结构
- JVM学习之-JVM内存结构
- JVM学习---JVM内存结构、垃圾回收
- java的线程安全、单例模式、JVM内存结构等知识学习和整理
- java的线程安全、单例模式、JVM内存结构等知识学习和整理
- JVM内存结构以及GC原理学习
- JVM学习笔记一 之 内存结构
- JVM学习笔记(2)------JVM的内存结构
- JVM结构整理
- JVM内存模型整理
- JVM内存结构分析
- JVM内存结构
- JVM内存结构
- Perl专题之函数(三)函数原型
- nyoj106 背包问题
- Effective C++ 学习笔记
- sgu 175 Encoding 二分
- fax 简介
- JVM内存结构学习整理
- 变换编码和预测编码
- 简单dp大合集
- 结合元素和属性的定义分析Schema的几种设计方案
- 程序员,其实我们都很浮躁。
- 【作业解答】第三次上机作业解题报告
- eclipse中误删文件怎么办
- The connection to adb is down, and a severe error has occured.
- JAVA中获取当前日期