jvm内存 一条线
线程共享 线程不共线【也叫非线程共享】
线程共享: 堆【Heap】、 方法区【method area】
非线程共享: 程序计数器、虚拟机栈、本地方法栈
方法区还包含 运行时常量池【类常量数据】
{———-}
1 | 异常: |
jvm堆
细分:新生代、老年代【分代收集算法】
再细分:Eden、From Survivor、To Survivor空间
再内存分配黑可以分出多个线程私有的分配缓冲区
存放内容:对象实例、细致的划分只是为了更好的回收
堆是回收主要区域
edgn区域 首次存放数据 内存不够会触发 MinorGC
针对老年代 还有MajorGC、Full GC、其中 FUll GC较慢 量级:10倍
jvm方法区
1、线程共享
2、存储已被虚拟机加载、类信息、常量、静态变量、即时编译器编译后的代码数据
jvm运行时常量池
1、方法区一部分
2、存放编译期生成各种字面量和符号引用、
直接内存
1、不属于jvm运行时数据取一部分 再五大板块外、
2、jdk1.4中 引入NIO、引用了一种基于通道(channel)与缓冲区(Buffer)的IO方式、它可以使用Native函数库直接分配对外内存、然后通过一个存储再java堆中的DirectByteBuffer对象来作为这一块内存引用、来进行操作、避免了java堆和native堆中来回复制数据
3、该内存受限于 操作系统和物理内存
虚拟机栈
1、虚拟机执行java程序使用栈
本地方法栈
1、执行native方法使用栈
程序计数器
1、与c交界点、一个线程一个程序计数器、内存耗费较小、记录执行指针