摘要:
5.9堆是分配对象的唯一选择吗 在《深入理解Java虚拟机》中关于Java堆内存有这样的一段描述: 随着JIT编译期的发展与逃逸分析技术逐渐成熟,栈上分配、标量替换优化技术将会导致一些微妙的变化,所有的对象都分配到堆上也逐渐变得不那么"绝对"了。 在Java虚拟机中,对象是在Java堆中分配内存的, 阅读全文
posted @ 2021-10-19 22:06
Lz_蚂蚱
阅读(52)
评论(0)
推荐(0)
摘要:
5.8堆空间的参数设置 官网说明:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html -XX:+PrintFlagsInitial 查看所有的参数的默认初始值 -XX:+PrintFlagsFinal 查看所有的参 阅读全文
posted @ 2021-10-19 22:04
Lz_蚂蚱
阅读(63)
评论(0)
推荐(0)
摘要:
TLAB线程私有缓存区 为什么有TLAB(Thread Local Allocation Buffer)? 堆区是线程共享区域,任何线程都可以访问到堆区中的共享数据。 由于对象实例的创建在JVM中非常频繁,因此在并发环境下从堆区中划分内存空间是线程不安全的。 为避免多个线程操作同一地址,需要使用加锁 阅读全文
posted @ 2021-10-19 22:03
Lz_蚂蚱
阅读(65)
评论(0)
推荐(0)
摘要:
5.5MinorGC、MajorGC、FullGC JVM在进行GC时,并非每次都对上面三个内存区域一起回收,大部分时候回收都是指新生代。 针对HotSpot VM的实现,它里面的GC按照回收区又分为两大种类型:一种是部分收集(Partial GC),一种是整堆收集(Full GC)。 部分收集:不 阅读全文
posted @ 2021-10-19 22:02
Lz_蚂蚱
阅读(101)
评论(0)
推荐(0)
摘要:
5.6堆空间分代思想 为什么需要把Java堆分代?不分代就不能正常工作吗? 不同对象的生命周期不同。70% - 99%的对象是临时对象。 新生代:有Eden、两块大小相同的Survivor(又称from/to,s0/s1)构成,to总为空。 老年代:存放新生代中经历多次GC仍然存活的对象。 5.7内 阅读全文
posted @ 2021-10-19 22:02
Lz_蚂蚱
阅读(31)
评论(0)
推荐(0)