JVM学习笔记一:java运行内存理解

java运行时内存


JVM学习笔记一:java运行内存理解

程序计数器
  1. 线程私有,是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的。
Java虚拟机栈
  1. 线程私有,生命周期和线程相同,虚拟机栈描述的是java方法执行的内存模型,每个方法在执行的过程中都会创建一个栈帧,每个方法从调用到执行完的过程,就对应一个栈帧在虚拟机中入栈到出栈的过程。个人认为:虚拟机栈就是方法的压栈出栈的一个内存区域。 java虚拟机帧有一定的内存限制,而虚拟机又没有进行配置,那么内存的大小=JVM进程能占用的最大内存-最大堆内存-最大方法区内存-jvm进程本身消耗内存 。当虚拟机栈能够使用的最大内存被消耗尽后,便会抛出OutOfMemoryError,
  2. 参考文章:本地方法栈和虚拟机栈的区别
本地方法栈
  1. 线程私有,和虚拟机栈很相似,虚拟机栈是针对java方法的 ,本地方法帧是针对native方法的。都有线程隔离的特点。以及都能抛出*Error和OutofMemonyError。
堆区
  1. 所有线程共享,存放对象实例和数组。
方法区
  1. 线程共享,存放的是已经被jvm加载的类信息,常量,静态常量,即时编译器编译后的代码。

java的基本数据类型

  1. byte 占1个字节
  2. short 占2个字节
  3. int 占4个字节
  4. char 字符型,占2个字节
  5. boolean 布尔模型,占1个字节
  6. long 长整形占8个字节
  7. float 单精度浮点型:占4个字节
  8. double 双精度浮点型:占8个字节

JVM学习笔记一:java运行内存理解