`
can_do
  • 浏览: 263604 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于Sun HotSpot JVM的相关要点

阅读更多
关于Sun HotSpot 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 => Java Virtual Machine Stack
(4).Program Counter
(5).Native Method Stack

(6).Runtime Constant Pool

注意:32bit or 64bit=>address space=kernel space + user space(native space +jvm memory)
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 =>如果是GUI程序,则需要配置该参数为false,即需要外显设备,如果是WEB 程序,不需要在服务器端显示,不需要外显设备,则配置为true。

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

(5).配置xml解析器:

(5.1)=>xml解析器用sun的

-Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl -Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl

=>sun jdk的rt.jar中包含此两个类

(5.2)=>也可以指定为第三方的xml解析器:

-Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl

=>需要jar包:xercesImpl-2.6.2.jar

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)==>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)**:记录当前线程所执行的字节码指令...

    借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 中的编译过程,包括...

    hotspot(jvm 源码).zip

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

    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