`

关于Sun HotSpot JVM的相关要点

    博客分类:
  • jvm
 
阅读更多

1、JVM的模式:
(1).-server==>优化模式,启动时慢,但运行时快,比client性能高,一般的web应用都建议JVM用此模式。
(2).-client ==>GUI时用此模式好,启动应用时比-server模式快。
(3).-Xint ==>解释器模式
JVM默认的模式,可以通过java -version查看。
2、JVM Memory Structure:
(1).Method Area
(2).Java Heap
(3).Java Stack
(4).Program Counter
(5).Native Method Stack
3、Dump 文件:
(1).Java Dump==>Thread Dump
(2).Heap Dump
(3).System Dump
4、JVM down:
(1).JVM:java.lang.OutOfMemoryError==>java_pid<number>.hprof==>for example:java_pid2262.hprof <==需要配置:-XX:+HeapDumpOnOutOfMemoryError
(2).JVM:crash==>hs_err_pid<number>.log==>for example:hs_err_pid7821.log

5、重要的JVM参数:
(1).-Djava.compiler=NONE
(2).-XX:CompileCommand=exclude,com/apusic/net/Muxer.acceptConnection

 

(3).-Djava.awt.headless=true

 

(4).调试JVM GC:-verbose:gc  -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:gc.log

 

6、GC日志释义:

 

>>Serial GC
17.868: [Full GC (System) 17.868: [Tenured: 0K->17790K(262144K), 0.3105753 secs] 77919K->17790K(498112K), [Perm : 28414K->28414K(65536K)], 0.3106954 secs] [Times: user=0.30 sys=0.01, real=0.31 secs]

 

释义:
(1).[Tenured: 0K->17790K(262144K), 0.3105753 secs]==>老代大小为:262144K,major GC(Full GC)前使用了0K,GC后使用了17790K,耗时:0.3105753 secs
(2).77919K->17790K(498112K)==& gt;heap的总大小为:498112K=512*1024K-26176K,即-Xms512M -Xmx512M中指定的heap的大小(512M)减去一个survior的大小,因为总是有一个survior为空。
(3).[Perm : 28414K->28414K(65536K)]==>perm代大小为:65536K,GC前使用了:28414K,GC后使用了28414K。注意:只有CMS策略时才可卸载Perm中的类。
(4).Serial GC=>默认使用该策略
(5).各个代的布局:
Heap
 def new generation   total 235968K, used 27052K [0x13900000, 0x23900000, 0x23900000)
  eden space 209792K,  12% used [0x13900000, 0x1536b138, 0x205e0000)
  from space 26176K,   0% used [0x21f70000, 0x21f70000, 0x23900000)
  to   space 26176K,   0% used [0x205e0000, 0x205e0000, 0x21f70000)
 tenured generation   total 262144K, used 25969K [0x23900000, 0x33900000, 0x33900000)
   the space 262144K,   9% used [0x23900000, 0x2525c440, 0x2525c600, 0x33900000)
 compacting perm gen  total 65536K, used 40068K [0x33900000, 0x37900000, 0x37900000)
   the space 65536K,  61% used [0x33900000, 0x36021018, 0x36021200, 0x37900000)
    ro space 10240K,  54% used [0x37900000, 0x37e78290, 0x37e78400, 0x38300000)
    rw space 12288K,  55% used [0x38300000, 0x3899d1c0, 0x3899d200, 0x38f00000)

 

>>Parallel GC
16.275: [Full GC (System) [PSYoungGen: 18245K->0K(229376K)] [PSOldGen: 0K->18024K(262144K)] 18245K->18024K(491520K) [PSPermGen: 33034K->33034K(65536K)], 0.2545408 secs] [Times: user=0.23 sys=0.02, real=0.25 secs]
(1).Parallel GC=>-XX:+UseParallelGC -XX:ParallelGCThreads=8 -XX:+ParallelRefProcEnabled
(2).各个代的布局:
Heap
 PSYoungGen      total 229376K, used 22887K [0x17990000, 0x27990000, 0x27990000)
  eden space 196608K, 11% used [0x17990000,0x18fe9ff8,0x23990000)
  from space 32768K, 0% used [0x25990000,0x25990000,0x27990000)
  to   space 32768K, 0% used [0x23990000,0x23990000,0x25990000)
 PSOldGen        total 262144K, used 18217K [0x07990000, 0x17990000, 0x17990000)
  object space 262144K, 6% used [0x07990000,0x08b5a5e0,0x17990000)
 PSPermGen       total 65536K, used 37289K [0x03990000, 0x07990000, 0x07990000)
  object space 65536K, 56% used [0x03990000,0x05dfa548,0x07990000)

  >>ConcMarkSweepGC
110.174: [Full GC (System) 110.175: [CMS: 34625K->30884K(262144K), 0.5798030 secs] 63310K->30884K(498112K), [CMS Perm : 46506K->45974K(65536K)], 0.5800074 secs] [Times: user=0.53 sys=0.00, real=0.58 secs]
(1).CMS GC=>-XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection
(2).各个代的布局
Heap
 par new generation   total 235968K, used 22476K [0x03920000, 0x13920000, 0x13920000)
  eden space 209792K,  10% used [0x03920000, 0x04f131e8, 0x10600000)
  from space 26176K,   0% used [0x10600000, 0x10600000, 0x11f90000)
  to   space 26176K,   0% used [0x11f90000, 0x11f90000, 0x13920000)
 concurrent mark-sweep generation total 262144K, used 26411K [0x13920000, 0x23920000, 0x23920000)
 concurrent-mark-sweep perm gen total 65536K, used 46039K [0x23920000, 0x27920000, 0x27920000)

分享到:
评论

相关推荐

    JVM Hotspot实现源码

    《OpenJDK中的JVM Hotspot实现源码解析》 在Java世界中,JVM(Java Virtual Machine)是运行Java程序的关键组件,它负责将字节码解释执行或即时编译为机器码,使得Java具备跨平台的能力。Hotspot是Oracle JDK和...

    Dissecting the Hotspot JVM-Martin Toshev.pdf

    "Dissecting the Hotspot JVM" ...本文档提供了关于 Hotspot JVM 的深入分析,帮助读者更好地理解 JVM 的架构、实现机理和调试技术。同时,本文档也为读者提供了实践经验,帮助读者更好地掌握 JVM 的使用和调试。

    OpenJDK(HotSpot JVM、Javac)源代码学习研究(包括代码注释、文档、用于代码分析的测试用例)

    OpenJDK(HotSpot JVM、Javac)源代码学习研究(包括代码注释、文档、用于代码分析的测试用例)

    Sun JVM原理与内存管理

    - **Sun Hotspot 对 JVM 堆采用分代管理**: - **新生代** (Young Generation):包含 Eden 和 Survivor 区域 (S0/S1)。 - **老年代** (Old Generation):长期存活的对象将被转移到这里。 - **分代策略**:利用...

    Sun Hotspot V1.6.0 JVM GC PPT.pdf

    ### Sun Hotspot V1.6.0 JVM GC详解 #### 一、JVM结构与GC基础知识 ##### 1.1 JVM内存结构概述 Java虚拟机(JVM)内存主要分为以下几个部分: - **程序计数器(PC Register)**:记录当前线程所执行的字节码指令...

    hotspot(jvm 源码).zip

    java JWM 源码 ,版本jdk1.8 。java JVM 源码,版本 jdk 1.8。java JWM 源码 ,版本jdk1.8 。java JWM 源码 ,版本jdk1.8 。java JWM 源码 ,版本jdk1.8 。

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

    %JAVA_HOME%/lib/sa-jdi.jar sun.jvm.hotspot.HSDB`则启动HSDB。 HSDB是HotSpot虚拟机的调试桥,它可以连接到正在运行的JVM并提供对堆、栈、方法等的检查。在HSDB会话中,`universe`命令显示了堆的参数和状态。这里...

    Compilation in the HotSpot VM-Zoltan-Majo.pdf

    Compilation in the HotSpot VM 是一篇关于 Java 虚拟机(Java Virtual Machine,JVM)的技术文档, 由 Oracle 公司的 HotSpot 编译器团队的 Zoltán Majó 撰写。该文档详细介绍了 HotSpot JVM 中的编译过程,包括...

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

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

    hotspot.tar.gz

    《深入解析Hotspot JVM源码》 Hotspot JVM,全称Hotspot Virtual Machine,是Java开发工具包(JDK)中的关键组成部分,负责运行Java应用程序。它由Oracle公司开发,以其出色的性能优化和动态编译能力而闻名。...

    HotSpot GC官网文档截图 - 20200917

    【HotSpot GC官网文档截图 - 20200917】是一个珍贵的资源集合,包含了一系列关于Java HotSpot虚拟机(JVM)垃圾收集器(GC)的官方文档截图。这些截图详细介绍了GC的发展历程、不同版本的特性、选择GC的策略以及调优...

    JDK13-jrockit-hotspot-migration-guide.pdf

    JDK 13 JRockit 到 HotSpot 迁移指南是一份详细的指南,旨在帮助开发者将 Java 应用程序从 JRockit JVM 迁移到 HotSpot JVM。该指南面向 Java 平台标准版,版本号为 13,发布于 2019 年 9 月。 该指南的主要内容...

    03调整+Java+虚拟机

    基于 Sun HotSpot 的 JVM,其中包括 Solaris 上的 Sun HotSpot JVM 以及 HP 的 JVM for HP-UX 尽管 JVM 调整操作随 JVM 提供程序的不同而有所变化,但一般的调整概念适用于所有 JVM。这些一般的概念包括: 编译器...

    HotSpot-JVM-Linux-x86-Research:HotSpot JVM针对Linux-x86平台的源代码学习研究(包括代码注释,文档,用于代码分析的测试用例)

    这个研究项目,"HotSpot-JVM-Linux-x86-Research",为开发者提供了一次深入理解HotSpot JVM内部机制的机会,包含了详细的源代码注释、相关文档以及用于代码分析的测试用例,旨在帮助我们全面地掌握HotSpot在Linux-...

    JVM虚拟机源码(C++)

    本资源提供的"JVM虚拟机源码(C++)"是针对Java 7版本的HotSpot JVM的源代码,这对于开发者尤其是对JVM原理感兴趣的程序员来说,是一份极其珍贵的学习材料。 HotSpot JVM的源码主要分为以下几个关键部分: 1. **...

    《JVM性能工程:深入OpenJDK和HotSpot Java虚拟机》

    这本书是探索Java虚拟机性能工程的深入指南,专注于OpenJDK和HotSpot JVM,适合希望优化Java应用性能的开发者。

    Princeton Edu - HotspotOverview.pdf

    本文档提供了关于Java虚拟机(JVM)特别是Hotspot JVM的详细介绍。Hotspot JVM是Java SE 6版本(代号“Mustang”)中的JVM,它由Sun Microsystems的资深工程师Paul Hohensee撰写。文档内容涵盖Java虚拟机的概览、...

    hotspot实战

    本书针对HotSpot JVM的内部工作原理、性能调优和相关技术进行了详尽的解析,对于Java开发者和性能优化工程师来说,是一份非常宝贵的参考资料。 首先,我们要理解HotSpot的基本概念。HotSpot JVM的主要目标是提高...

    jdk sun 开头的源码

    例如,`sun.jvm.hotspot`子包提供了一些用于分析和调试HotSpot JVM的工具,这对于性能优化和故障排查非常有用。 4. **编译器和类加载器**:`sun.compile`和`sun.misc`包提供了对Java编译和类加载的支持。`sun.misc....

Global site tag (gtag.js) - Google Analytics