关于hotspot的gc

关键词

分代gc

java的堆内存主要分为young generation与old generation

其中young generation又分为一个eden space与两个survivor space(From与TO)。默认情况下,eden space占young generation的80%,两个survivor space各占10%。

新对象一般在eden space中分配,如果eden space满了,就进行一次young gc。eden space + From 中的所有存活对象会被复制到TO里去(这是因为大部分的新分配对象都会迅速死亡,每个survivor space虽然只占young generation的10%,但是一般情况下足够存放younggc中的存活元素)。每次young gc之后,From与TO交换。

每个Object的对象头里都有字段用于记录这个对象经历了多少次young gc。如果一个对象熬过了一定次数(可以通过-XX:MaxTenuringThreshold配置,默认为15次)的Young gc而不死,那么可以晋升到old generation。

如果新对象的体积过大(可以通过-XX:PretenureSizeThreshold配置,但是该设置只对Serial和ParNew收集器生效),那么它会被直接分配到old generation

remember set   --  card table

write barrier

stw

young gc

major gc

full gc

promotion guarantee check

参考资料

http://hllvm.group.iteye.com/group/topic/21468#post-272070

http://blog-archive.griddynamics.com/2011/06/understanding-gc-pauses-in-jvm-hotspots.html

时间: 2024-08-27 23:41:38

关于hotspot的gc的相关文章

JVM内存模型以及HotSpot的GC策略

概述 想要进一步掌握Java语言,必须要深入了解一下Java程序的运行环境.本文会对JVM的内存模型.Java内存自动管理机制.以及Oracle官方虚拟机HotSpot在GC方面的实现策略进行大概的梳理. 什么是Java的内存模型? 众所周知,Java程序是运行在JVM上面的,但是不具体指定是哪一款JVM,只要是符合一定的规范的JVM,都可以正确的运行Java字节码.该规范由Oracle官方提供,旨在描述一个抽象的JVM,它包含很多部分,包括class文件结构.运行时内存状态.指令集等. 而上述

HotSpot VM GC收集器的合名问题

最近分析HotSpot VM GC日志,就各种收集器的名称搞晕掉了,幸好参考R大(RednaxelaFX )一些回复和文章.整理在此文,以方便自已日后查阅,也可让有需要的同学少走弯路,追本溯源,一切从DefNew的来因说起. DefNew: 是使用-XX:+UseSerialGC(新生代,老年代都使用串行回收收集器) ParNew: 是使用-XX:+UseParNewGC(新生代使用并行收集器,老年代使用串行回收收集器)或者-XX:+UseConcMarkSweepGC(新生代使用并行收集器,老

[转]HotSpot VM GC 的种类

原文地址:http://www.cnblogs.com/redcreen/archive/2011/05/04/2037029.html collector种类 GC在 HotSpot VM 5.0里有四种: incremental (sometimes called train) low pause collector已被废弃,不在介绍. 类别 serial collector parallel collector( throughput collector ) concurrent coll

HotSpot VM GC 的种类

collector种类 GC在 HotSpot VM 5.0里有四种: incremental (sometimes called train) low pause collector已被废弃,不在介绍. 类别 serial collector parallel collector( throughput collector ) concurrent collector(concurrent low pause collector) 介绍 单线程收集器使用单线程去完成所有的gc工作,没有线程间的

HotSpot VM GC 的种类(转)

collector种类 GC在 HotSpot VM 5.0里有四种: incremental (sometimes called train) low pause collector已被废弃,不在介绍. 类别 serial collector parallel collector( throughput collector ) concurrent collector(concurrent low pause collector) 介绍 单线程收集器使用单线程去完成所有的gc工作,没有线程间的

Java Hotspot G1 GC的一些关键技术

G1 GC,全称Garbage-First Garbage Collector,通过-XX:+UseG1GC参数来启用,作为体验版随着JDK 6u14版本面世,在JDK 7u4版本发行时被正式推出,相信熟悉JVM的同学们都不会对它感到陌生.在JDK 9中,G1被提议设置为默认垃圾收集器(JEP 248).在官网中,是这样描述G1的: The Garbage-First (G1) collector is a server-style garbage collector, targeted for

Java 内存区域和GC机制

目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代 码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢.这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制.概括地说,该机制对 JVM(Java Virtual M

Java内存区域划分和GC机制

Java 内存区域和GC机制 目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代 码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢.这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制.概括地说,该机制对 JVM

[转]JVM系列二:GC策略&内存申请、对象衰老

原文地址:http://www.cnblogs.com/redcreen/archive/2011/05/04/2037056.html JVM里的GC(Garbage Collection)的算法有很多种,如标记清除收集器,压缩收集器,分代收集器等等,详见HotSpot VM GC 的种类 现在比较常用的是分代收集(generational collection,也是SUN VM使用的,J2SE1.2之后引入),即将内存分为几个区域,将不同生命周期的对象放在不同区域里:young genera