JVM学习笔记一:java运行内存理解
分类:
文章
•
2024-08-12 08:05:07
java运行时内存
程序计数器
- 线程私有,是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的。
Java虚拟机栈
- 线程私有,生命周期和线程相同,虚拟机栈描述的是java方法执行的内存模型,每个方法在执行的过程中都会创建一个栈帧,每个方法从调用到执行完的过程,就对应一个栈帧在虚拟机中入栈到出栈的过程。个人认为:虚拟机栈就是方法的压栈出栈的一个内存区域。 java虚拟机帧有一定的内存限制,而虚拟机又没有进行配置,那么内存的大小=JVM进程能占用的最大内存-最大堆内存-最大方法区内存-jvm进程本身消耗内存 。当虚拟机栈能够使用的最大内存被消耗尽后,便会抛出OutOfMemoryError,
- 参考文章:本地方法栈和虚拟机栈的区别
本地方法栈
- 线程私有,和虚拟机栈很相似,虚拟机栈是针对java方法的 ,本地方法帧是针对native方法的。都有线程隔离的特点。以及都能抛出StackOverflowError和OutofMemonyError。
堆区
- 所有线程共享,存放对象实例和数组。
方法区
- 线程共享,存放的是已经被jvm加载的类信息,常量,静态常量,即时编译器编译后的代码。
java的基本数据类型
- byte 占1个字节
- short 占2个字节
- int 占4个字节
- char 字符型,占2个字节
- boolean 布尔模型,占1个字节
- long 长整形占8个字节
- float 单精度浮点型:占4个字节
- double 双精度浮点型:占8个字节
