
JVM
w_rcss
他山之石,可以攻玉。
展开
-
一文读懂ZGC
前言ZGC是oracle继G1之后推出一款标记-整理算法的并发垃圾回收器,jdk11仅支持linux,jdk14增加了对windows,mac的支持。本文简单介绍ZGC什么是ZGC?ZGC(The Z Garbage Collector)是一款标记-整理算法的并发垃圾回收器,官方解释ZGC只是个名字,没有意义。 //开启ZGC-XX:+UnlockExperimentalVMOptions-XX:+UseZGC 为什么要使用ZGC?ZGC往往适用于大内存和多核cpu,支持堆的大小范围很广原创 2020-10-09 14:09:54 · 2331 阅读 · 0 评论 -
一文读懂G1
G1(garbage—first)G1是JVM中的一种垃圾回收器,garbage-first意思是总是优先回收价值最大的区域。G1长什么样?Serial,Parallel,CMS将整个堆按年代划分,进行分代回收。G1依然是分代垃圾回收器,G1将堆划分为2048个region(大小为1~32M),每个region从属不同的年代,每个年代都是一部分region的集合。如图:为什么要使用G1?...原创 2019-10-21 21:45:01 · 2182 阅读 · 3 评论 -
快速了解bump-the-pointer和TLAB
jvm 通过bump-the-pointer和TLAB用来加快内存分配。Bump-the-pointer(撞点)技术跟踪在伊甸园空间创建的最后一个对象,这个对象会被放在伊甸园空间的顶部。如果之后需要创建对象,只需检查伊甸园空间是否有足够的剩余空间。如果有足够的空间,对象就会被创建在伊甸园空间,并且被放置在顶部(此时会更换标记位)。这样一来,每次创建新的对象时,只需要检查最后被创建的对象。这将极大地...原创 2017-12-16 13:58:13 · 1335 阅读 · 0 评论 -
三分钟快速了解jvm的内存结构
jvm主要分3大块:堆heap,栈stack,持久区permanent(也叫方法区)。1:堆是gc的主要区域,主要存放对象实例,分为新生代young和老年代old(默认young占堆的1/3,old占2/3)。新生代分:Eden伊甸,To,From三部分(默认8:1:1)。Eden存放新建的对象,当Eden满了(jvm内存分配技术Bump-the-pointer可以快速检测,加快Eden内存分配)...原创 2018-03-20 01:45:15 · 236 阅读 · 0 评论 -
OutOfMemoryError原因和解决思路
OutOfMemoryError主要有3方面:堆溢出:java.lang.OutOfMemoryError: Java heap space 创建对象过多;集合中有大量的对象使用后未清空(jvm无法回收)--检查list,map;死循环或循环过多产生的对象实体;栈溢出:java.lang.StackOverflowError方法调用太多,一般由递归导致java.lang.OutOfMemoryEr...原创 2018-03-20 15:33:27 · 1097 阅读 · 0 评论 -
如何确保新生代对象被老年代对象引用的时候不被gc
stop-the-world:Stop-the-world会在任何一种GC算法中发生。Stop-the-world意味着 JVM 因为要执行GC而停止了应用程序的执行。当Stop-the-world发生时,除了GC所需的线程以外,所有线程都处于等待状态,直到GC任务完成。GC优化很多时候就是指减少Stop-the-world发生的时间。minor gc:发生在新生代的gc(minor:次要的)。m...原创 2018-04-15 04:25:05 · 3050 阅读 · 1 评论 -
方法区溢出解决
原文地址:http://outofmemory.cn/c/java-outOfMemoryErrorPermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中, 它和存放类实例(Instance)的Heap区域不同,GC(Ga...转载 2018-03-28 00:01:50 · 1304 阅读 · 0 评论 -
jvm的5种垃圾回收器
jdk7下的5种gc回收器:1. Serial GC (-XX:+UseSerialGC)算法:mark-sweep-compact(1)标记老年代中依然存活的对象。(标记)(2)从头开始检查堆内存空间,并且只留下依然幸存的对象。(清理)(3)从头开始,顺序地填满堆内存空间,并且将对内存空间分成两部分:一个保存着对象,另一个空着(压缩)。2. Parallel GC (-XX:+UseParall...原创 2017-12-16 15:02:56 · 471 阅读 · 0 评论