jvm(java虚拟机)内存分配总结

java虚拟机的内存分配主要分类两部分,线程共享区和线程独占区

jvm(java虚拟机)内存分配总结_第1张图片

1、线程共享区

jvm(java虚拟机)内存分配总结_第2张图片

2、线程独占区

jvm(java虚拟机)内存分配总结_第3张图片

3、1.8版本虚拟机内存架构调整

jvm(java虚拟机)内存分配总结_第4张图片

4、直接内存和运行时常量池

运行时常量池,就是运行时产生的常量。代码中直接定义的常量是class字节码常量,固定的。运行时产生的常量,如拼接字符串,如string.intern() 都是运行时产生的常量。

注意:1.8运行时常量池放在元数据实现

直接内存:是 jdk1.4以后提供的nio模型,其中基于通道的buffer缓冲使用的是虚拟机堆外之外的内存,受到物理内存的限制

 

 

1、基本数据类型 数据和引用都存储在栈中:操作快,但是内存小

2、包装类 1.5以后提供自动拆箱机制

 Java的8种基本类型(Byte, Short, Integer, Long, Character, Boolean, Float, Double), 除Float和Double以外, 其它六种都实现了常量池, 但是它们只在大于等于-128并且小于等于127时才使用常量池

3、string 直接赋值放在常量池中存储在 stringTable中(类似)

4、数组 无论基本数据类型还是对象 数据均存储在堆内存中

 

你可能感兴趣的:(虚拟机)