`
flynewton
  • 浏览: 59924 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Sun HotSpot JVM内存管理及垃圾收集

阅读更多

关键字: jvm , 内存管理 , 垃圾收集

 

转自:http://blog.csdn.net/watchnight/archive/2009/12/11/4987065.aspx

内存模型(内存池)

从上图可以看出,一个java进程主要分为“Java Heap”和“C Heap”两个部分。只有“Java Heap”是JVM的GC对象。

从J2SE 5.0开始,JVM启动时会默认选择按“server VM ”启动还是按“client VM ”,具体选择策略参照下面的连接。

Server-Class Machine Detection

启动方式选择好以后,开始选择GC方法,根据GC方法的不同,为每块内存池设置不同的默认值。关于GC方法的选择,参照下面的连接。

Garbage Collector Ergonomics

另外,JVM一共提供了4中GC方法,根据业务的不同,可以选择不同的GC方法。GC方法详细介绍,参见下面的连接。

Memory Management Whitepaper [pdf]

根据GC算法的不同,GC的名字,以及内存池的名字都不一样。

J2SDK 5提供了一些MXBean,通过这些MXBean可以取得具体的名字。

如:java.lang.management.GarbageCollectorMXBean和java.lang.management.MemoryMXBean

(1)-XX:+UseConcMarkSweepGC

 GC名:

   ParNew

   ConcurrentMarkSweep

 内存池名:

   CMS Perm Gen

   Par Eden Space

   Par Survivor Space

   Code Cache

   CMS Old Gen

(2)-XX:+UseParallelGC

 GC名:

   PS Scavenge

   PS MarkSweep

 内存池名:

   PS Survivor Space

   PS Perm Gen

   PS Old Gen

   PS Eden Space

   Code Cache

(3)-XX:+UseParallelOldGC

 GC名:

   PS Scavenge

   PS MarkSweep

 内存池名:

   PS Survivor Space

   PS Perm Gen

   PS Old Gen

   PS Eden Space

   Code Cache

(4)-XX:+UseSerialGC

 GC名:

   Copy

   MarkSweepCompact

 内存池名:

   Survivor Space

   Perm Gen

   Tenured Gen

   Eden Space

   Code Cache

关于"Code Cache"的说明,资料比较少,下面的连接中,只有一句介绍,对普通程序员来说也够用了。

http://java.sun.com/j2se/1.5.0/docs/guide/management/jconsole.html

我们可以看到,每种算法,GC都是有两个,一个是minor collection,一个是major collection(也叫FullGC)。

JVM还提供了一个System.gc(),让程序员主动GC,System.gc()是minor还是major?答案是major。参见下面的连接。

http://java.sun.com/docs/hotspot/gc1.4.2/faq.html

从 Java SE 6 Update 14开始,又增加了一个名叫G1的垃圾收集算法。跟前面的4种内存管理模式完全不一样。

具体没有研究过,算法详细参见下面的连接。

http://java.sun.com/javase/technologies/hotspot/gc/g1_intro.jsp

JVM中的Object是如何分配,如何收集的?什么时候使用minor什么时候使用major?什么时候发生OutOfMemoryException?

关于这个问题,HP网站上有一篇详细介绍GC的PPT,值得一看。

Memory Management and Garbage Collection (PDF, 1.4MB)

分享到:
评论

相关推荐

    JVM内存管理_GC模型_编写GC友好的代码

    JVM内存管理的介绍,编写GC友好的代码。 本材料主要关心 Sun Hotspot JVM 6的内存管理 Sun Hotspot JVM 6的GC模型 主要针对JVM6的GC模型,但也会简单介绍Java 7的G1 编写GC友好代码的一些技巧

    JVM Hotspot实现源码

    OpenJDK

    Sun Hotspot V1.6.0 JVM GC PPT.pdf

    jvm 结构介绍、GC相关知识总结

    03调整+Java+虚拟机

    JVM 内存管理功能(即垃圾回收)为提高 JVM 性能提供了其中一种最大的可能性。 类装入调整。 过程 优化启动性能和运行时性能 在某些环境中,优化 WebSphere Application Server 的启动性能比优化运行时性能更...

    resin-jvm 调优

    gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存。java语言并不要求jvm有gc,也没有规定gc如何工作。不过常用的jvm都有gc,而且大多数gc都使用类似的算法管理内存和执行收集操作。 在充分理解了...

    借HSDB来探索HotSpot VM的运行时数据.gist1

    It will be set after the class is loaded.VM Started: Set deferred breakpoint Tes

    这些不可不知的JVM知识.pdf

    当然,严格来说JVM也是虚拟机规范,有很多不同的实现,Sun/OracleJDK和OpenJDK中的默认Java虚拟机是HotSpot虚拟机,是目前使用范围最广的Java虚拟机,一般讲到的JVM默认指的就是HotSpot虚拟机。 1.2、Java程序运行...

    Java虚拟机

    第五部分探讨了Java实现高效并发的原理,包括JVM内存模型的结构和操作;原子性、可见性和有序性在Java内存模型中的体现;先行发生原则的规则和使用;线程在Java语言中的实现原理;虚拟机实现高效并发所做的一系列锁...

    GC分析工具盒GC策略介绍

    介绍Sun HotSpot和JRockit JVM堆内存输出和分析工具,经典GC策略原理等。

    JavaFlightRecorderMissionControl一个高效的性能分析工具

    朱光宇(效山)阿里巴巴系统软件部技术专家,长期致力于JVM、操作系统等基础软件的研发...曾经参与过Sun Hotspot JVM(micro edition) 、Android on x86、YunOS的研发和优化,目前从事Cloud环境下AJDK性能分析工具的研发。

    java查看sun包源码-monitor:java生产环境内存调优(包括jvm参数类型,JVM的参数类型jinfo&jps(参数和进程查看)j

    jstat(类加载、垃圾收集、JIT 编译):alien: jmap+MAT(内存溢出):alien: jstack(线程、死循环、死锁):alien: JVisualVM(本地和远程可视化监控:alien: 使用 BTrace进行拦截调试:alien: Tomcat 性能监控与调优:alien: ...

    Java理论与实践:Mustang中的同步优化

    本文描述的是Sun的HotSpot JVM实现未来版本的特性。每当易变的变量在线程间共享时,都必须使用同步来确保一个线程所做的更新,能够及时地被其他线程看到。同步的主要方式就是使用synchronized块,它既提供了互斥又...

    java 6 jvm 参数选项大全

    本文是基于最新的SUN官方文档JavaSE6HotspotVMOptions 编写的译文。 主要介绍JVM 中的非稳态选项及其使用说明。 为了让读者明白每个选项的含义,作者在原文基础上补充了大量的资料。希望这份文档,对正在 研究...

    jvm:用Rust编写的JVM

    Sun是一家伟大的公司,在C ++时代,他们创建了JVM&HotSpot。 现在,我们有了Rust,一个更好的工具,让我们重新制作JVM! 向前面的医务人员致敬! 感谢您为抗击流行病做出的贡献。 路线图 通过JDK中的测试用例 ...

    Eclipse 启动运行速度调优

    该设置消除了许多系统启动过程中的主要垃圾收集事件。SunONE Studio 或其它包含更多模块的 IDE 的用户可能希望将该数值设置得更高。 下面列出了其它一些可能对 ECLIPSE 在某些系统(不是所有系统)上的性能产生...

    java8rt.jar源码-ymdx-jvm:义码当仙之Java虚拟机(JVM)

    VM既继承了Sun之前两款商用虚拟机的优点(如前面提到的准确式内存管理),也有许多自己新的技术优势, 如它名称中的HotSpot指的就是它的热点代码探测技术(其实两个VM基本上是同时期的独立产品,HotSp

    java面试题

    Bea JRockit JVM支持4种垃圾收集器: 46 63.5. 如何从JVM中获取信息来进行调整 46 63.6. Pdm系统JVM调整 47 63.6.1. 服务器:前提内存1G 单CPU 47 63.6.2. 客户机:通过在JNLP文件中设置参数来调整客户端JVM 47 64....

    dumpclass-0.0.2-sources.jar

    dumpclass源码,对于多个ClassLoader的情况,可以使用--classLoaderPrefix,这样子在输出.class文件时,会为每一个ClasssLoader创建一个目录,比如:sun.jvm.hotspot.oops.Instance@955d26b8。并且会在目录下放一个...

    jdk1.6版本,描述中为jdk环境配置

    * 2 /usr/lib/jvm/java-6-sun/bin/java 300 手动模式 要维持当前值[*]请按回车键,或者键入选择的编号: 我们输入值:2 回车 4.测试java -version 显示:java version "1.6.0_30" Java(TM) SE Runtime ...

Global site tag (gtag.js) - Google Analytics