jvm培训:JVM的背景知识

JVM堆内存划分
  jvm培训

新生代(YoungGeneration)
  新生代内被划分为三个区:Eden,fromsurvivor,tosurvivor。大多数对象在新生代被创建。MinorGC针对的是新生代的垃圾回收。
  老年代(OldGeneration)
  在新生代中经历了几次MinorGC仍然存活的对象,就会被放到老年代。MajorGC针对的是老年代的垃圾回收。本文重点分析的CMS就是一种针对老年代的垃圾回收算法。另外FullGC是针对整堆(包括新生代和老年代)做垃圾回收的。
  永久代(Perm)
  主要存放已被虚拟机加载的类信息,常量,静态变量等数据。该区域对垃圾回收的影响不大,本文不会过多涉及。
  CMS垃圾回收的6个重要阶段
  initial-mark初始标记(CMS的第一个STW阶段),用于标记GC根直接引用的对象。GCRoot直接引用的对象并不多,因此速度非常快。
  initial-mark并发标记阶段,从第一个阶段中标记的对象开始,在此阶段中标记所有可到达的对象。
  concurrent-preclean并发预清理阶段也是并发执行阶段。在此阶段,它将在上一阶段的执行过程中寻找从新一代升级,新分配或更新的对象。通过同时重新扫描这些对象,预清理阶段可以减少下一个世界停止标记阶段的工作量。
  concurrent-preclean并发可终止预清洗阶段。该阶段实际上与上一阶段相同,但是也减少了下一个STW重新标记阶段的工作量。添加此阶段是为了允许我们控制此阶段结束的时间,例如扫描需要多长时间(默认5秒)或伊甸园区域使用率达到所需比例(默认50%)才能结束此阶段。
  remark重标记阶段(CMS的第二个STW阶段),挂起所有用户线程,重新扫描GC根目录中的整个堆,并标记尚存的对象。应该注意的是,尽管CMS只回收旧一代中的垃圾对象,但在此阶段它仍需要扫描年轻一代,因为许多GC根都在年轻一代中,而这些GC根所指向的对象在旧一代中。老一辈。世代参考”。
  concurrent-preclean,并发清理。
  推荐阅读:jvm培训:如何判断哪些对象需要回收?
  如果你想了解更多关于java架构师的专业知识,可以加入JAVA架构师交流群:1037935907,里面都是同行,有资源分享包括但不限于(分布式架构、高可扩展、高性能、高并 发、Jvm性能调优、Spring,MyBatis,Nginx源码分析,Redis,ActiveMQ、、Mycat、Netty、Kafka、Mysql 、Zookeeper、Tomcat、Docker、Dubbo、Nginx)。欢迎一到五年的工程师加入,合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值