<<深入了解Javax虚拟机_JVM高级特性与最佳实践>>读书笔记(一)
运行时数据区域
方法区
在hostSpot虚拟机上,通常被称为“永久代”
定义:存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等。
是否线程共享:所有线程共享的区
异常类型:当方法区无法分配内存的时候,抛出OutOfMemoryError的异常
运行时常量池
定义:方法区中的一部分,用于存放编译器生成的各种字面量和符号的引用。
虚拟机栈
定义:描述的是java方法执行的内存模型。每一个方法在执行的同时都会创建一个栈帧用于存储局部变量表,操作数栈,动态链接,方法出口等信息。 当方法执行时,栈帧入栈,当方法执行结束的时候,栈帧出栈,因此,虚拟机栈如栈的顺序就是方法执行的顺序。
是否线程共享:线程私有的,生命周期和线程相同
异常类型:1.stackOverflow 异常:当线程请求的栈的深度大于虚拟机允许的深度,将抛出异常。
2. OutOfMemoryError 异常:当虚拟机栈动态扩展的时候,无法申请到足够的内存,将抛出异常。
本地方法栈
与虚拟机栈作用类型,虚拟机栈是针对Java方法,本地方法栈是针对于Native方法。
java堆 *
垃圾收集器管理的主要区域,也被称为GC堆
**定义:**存放对象实例,可以通过-Xmx,-Xms来控制内存的大小
是否线程共享:线程共享
异常类型:当堆 没有内存完成实力分配的时候,抛出OutOfMemoryError的异常
程序计数器
**定义:**记录当前线程执行的字节码的行号指示器
是否线程共享:线程私有的