关于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)
分享到:
相关推荐
《OpenJDK中的JVM Hotspot实现源码解析》 在Java世界中,JVM(Java Virtual Machine)是运行Java程序的关键组件,它负责将字节码解释执行或即时编译为机器码,使得Java具备跨平台的能力。Hotspot是Oracle JDK和...
"Dissecting the Hotspot JVM" ...本文档提供了关于 Hotspot JVM 的深入分析,帮助读者更好地理解 JVM 的架构、实现机理和调试技术。同时,本文档也为读者提供了实践经验,帮助读者更好地掌握 JVM 的使用和调试。
OpenJDK(HotSpot JVM、Javac)源代码学习研究(包括代码注释、文档、用于代码分析的测试用例)
- **Sun Hotspot 对 JVM 堆采用分代管理**: - **新生代** (Young Generation):包含 Eden 和 Survivor 区域 (S0/S1)。 - **老年代** (Old Generation):长期存活的对象将被转移到这里。 - **分代策略**:利用...
### Sun Hotspot V1.6.0 JVM GC详解 #### 一、JVM结构与GC基础知识 ##### 1.1 JVM内存结构概述 Java虚拟机(JVM)内存主要分为以下几个部分: - **程序计数器(PC Register)**:记录当前线程所执行的字节码指令...
%JAVA_HOME%/lib/sa-jdi.jar sun.jvm.hotspot.HSDB`则启动HSDB。 HSDB是HotSpot虚拟机的调试桥,它可以连接到正在运行的JVM并提供对堆、栈、方法等的检查。在HSDB会话中,`universe`命令显示了堆的参数和状态。这里...
Compilation in the HotSpot VM 是一篇关于 Java 虚拟机(Java Virtual Machine,JVM)的技术文档, 由 Oracle 公司的 HotSpot 编译器团队的 Zoltán Majó 撰写。该文档详细介绍了 HotSpot JVM 中的编译过程,包括...
java JWM 源码 ,版本jdk1.8 。java JVM 源码,版本 jdk 1.8。java JWM 源码 ,版本jdk1.8 。java JWM 源码 ,版本jdk1.8 。java JWM 源码 ,版本jdk1.8 。
JVM内存管理的介绍,编写GC友好的代码。 本材料主要关心 Sun Hotspot JVM 6的内存管理 Sun Hotspot JVM 6的GC模型 主要针对JVM6的GC模型,但也会简单介绍Java 7的G1 编写GC友好代码的一些技巧
《深入解析Hotspot JVM源码》 Hotspot JVM,全称Hotspot Virtual Machine,是Java开发工具包(JDK)中的关键组成部分,负责运行Java应用程序。它由Oracle公司开发,以其出色的性能优化和动态编译能力而闻名。...
【HotSpot GC官网文档截图 - 20200917】是一个珍贵的资源集合,包含了一系列关于Java HotSpot虚拟机(JVM)垃圾收集器(GC)的官方文档截图。这些截图详细介绍了GC的发展历程、不同版本的特性、选择GC的策略以及调优...
JDK 13 JRockit 到 HotSpot 迁移指南是一份详细的指南,旨在帮助开发者将 Java 应用程序从 JRockit JVM 迁移到 HotSpot JVM。该指南面向 Java 平台标准版,版本号为 13,发布于 2019 年 9 月。 该指南的主要内容...
基于 Sun HotSpot 的 JVM,其中包括 Solaris 上的 Sun HotSpot JVM 以及 HP 的 JVM for HP-UX 尽管 JVM 调整操作随 JVM 提供程序的不同而有所变化,但一般的调整概念适用于所有 JVM。这些一般的概念包括: 编译器...
这个研究项目,"HotSpot-JVM-Linux-x86-Research",为开发者提供了一次深入理解HotSpot JVM内部机制的机会,包含了详细的源代码注释、相关文档以及用于代码分析的测试用例,旨在帮助我们全面地掌握HotSpot在Linux-...
本资源提供的"JVM虚拟机源码(C++)"是针对Java 7版本的HotSpot JVM的源代码,这对于开发者尤其是对JVM原理感兴趣的程序员来说,是一份极其珍贵的学习材料。 HotSpot JVM的源码主要分为以下几个关键部分: 1. **...
这本书是探索Java虚拟机性能工程的深入指南,专注于OpenJDK和HotSpot JVM,适合希望优化Java应用性能的开发者。
本文档提供了关于Java虚拟机(JVM)特别是Hotspot JVM的详细介绍。Hotspot JVM是Java SE 6版本(代号“Mustang”)中的JVM,它由Sun Microsystems的资深工程师Paul Hohensee撰写。文档内容涵盖Java虚拟机的概览、...
本书针对HotSpot JVM的内部工作原理、性能调优和相关技术进行了详尽的解析,对于Java开发者和性能优化工程师来说,是一份非常宝贵的参考资料。 首先,我们要理解HotSpot的基本概念。HotSpot JVM的主要目标是提高...
例如,`sun.jvm.hotspot`子包提供了一些用于分析和调试HotSpot JVM的工具,这对于性能优化和故障排查非常有用。 4. **编译器和类加载器**:`sun.compile`和`sun.misc`包提供了对Java编译和类加载的支持。`sun.misc....