我对Java Hotspot
VM的部分翻译,有些在工作中完全没有用到的参数我没有做解释,原文章在这
Java HotSpot VM Options
同时,在工作中有一些没有接触到的参数,我不打清楚其含义跟作用, 也请了解的朋友留言赐教.这些Option我贴在了文章最后面.
JVM 选项不严格的被分为三类:
1.Behavioral options, 用以改变VM的基本行为.
2.Performance tuning options,影响VM的重要参数,对其进行调整进行性能调优.
3.Debug Options,用来在log中进行跟踪,打印一些VM信息.
可管理标记的使用:
1.Boolean Options:
-XX:+ 表示打开
-XX:- 表示关闭
2.Numeric options
-XX:=. 数字需包括'm' or 'M'代表单位megabytes, 'k' or 'K'代表单位 kilobytes,'g' or 'G' 代表单位 gigabytes,例如 for example, 32k
与32768代表同一值 32x1024.
3.String options
-XX:=,通常用来声明 log path.
罗列一些常用参数极其代表含义:
Behavioral Options
-XX:-DisableExplicitGC
关闭调用System.gc()方法, 但是JVM还是会在需要的时候进行full GC.
-XX:+ScavengeBeforeFullGC
在Major GC 之前 进行一次 Minor GC
-XX:-UseConcMarkSweepGC
对 Tenured Generation 使用 CMS(concurrent mark-sweep collection)算法.
-XX:-UseParallelGC
Young Generation使用Parallel算法,Tenured Generation 使用 Serial算法.
-XX:-UseParallelOldGC
在Full GC 中使用 Parallel GC 算法
-XX:-UseSerialGC
使用Young Old 带均使用Serial算法
Performance Options
-XX:LargePageSizeInBytes=size
为java heap 设置page size
-XX:MinHeapFreeRatio=40
在GC之后 最小的空闲heap占总heap的比例Minimum percentage of heap free after GC to avoid expansion.
-XX:MaxHeapFreeRatio=70
设置在GC之后, 最大的空闲heap占总heap的比例
-XX:MaxNewSize=size
设置 New Generation最大值.
-XX:MaxPermSize=size
设置Perm Generation的大小.
-XX:NewRatio=n
n = new/old generation sizes
-XX:NewSize=2.125m
new generation的默认值
-XX:TargetSurvivorRatio=50
回收后survior区的期望比例
Debugging Options
-XX:HeapDumpPath=
设置Heap Dum 存储路径
-XX:-HeapDumpOnOutOfMemoryError
在OOM时生成heapdump文件.
-XX:OnOutOfMemoryError=";
用户自定义命令, 在OutOfMemory Error抛出时运行定义命令.
-XX:-PrintGC
打印GC时的信息
-XX:-PrintGCDetails
打印GC时的详细信息
-XX:-PrintGCTimeStamps
打印GC的时间戳
-XX:-PrintTenuringDistribution
打印Tenured区的信息
-XX:ParallelGCThreads=
设置Parallel Garbage Collector的thread 数量
-XX:MaxTenuringThreshold=
设置控制对象从新生代转移到到旧生代的Minor GC次数
----------------------------------------------------------------------------------------------------
[
-XX:-TraceClassLoading Trace loading of classes.
-XX:-TraceClassLoadingPreorder Trace all classes loaded in order
referenced (not loaded). (Introduced in 1.4.2.XX:-TraceClassResolution
Trace constant pool resolutions. (Introduced in 1.4.2.)
-XX:-TraceClassUnloading
Trace unloading of classes.
-XX:-TraceLoaderConstraints
Trace recording of loader constraints. (Introduced in 6.)
-XX:+PerfSaveDataToFile
Saves jvmstat binary data on exit.
-XX:+UseCompressedOops
Enables the use of compressed pointers (object references represented as
32 bit offsets instead of 64-bit pointers) for optimized 64-bit
performance with Java heap sizes less than 32gb.
-XX:+AlwaysPreTouch
Pre-touch the Java heap during JVM initialization. Every page of the
heap is thus demand-zeroed during initialization rather than
incrementally during application execution.
-XX:AllocatePrefetchDistance=
Sets the prefetch distance for object allocation. Memory about to be
written with the value of new objects is prefetched into cache at this
distance (in bytes) beyond the address of the last allocated object.
Each Java thread has its own allocation point. The default value varies
with the platform on which the JVM is running.
-XX:InlineSmallCode= I
Inline a previously compiled method only if its generated native code
size is less than this. The default value varies with the platform on
which the JVM is running.
-XX:MaxInlineSize=35
Maximum bytecode size of a method to be inlined.
-XX:FreqInlineSize=
Maximum bytecode size of a frequently executed method to be inlined. Thedefault value varies with the platform on which the JVM is running.
-XX:LoopUnrollLimit=
Unroll loop bodies with server compiler intermediate representation node count less than this value. The limit used by the server compiler is a function of this value, not the actual value. The default value varies with the platform on which the JVM is running.
-XX:InitialTenuringThreshold=7
Sets the initial tenuring threshold for use in adaptive GC sizing in the parallel young collector. The tenuring threshold is the number of timesan object survives a young collection before being promoted to the old,or tenured, generation.
-XX:-PrintClassHistogram
Print a histogram of class instances on Ctrl-Break. Manageable.
(Introduced in 1.4.2.) The jmap -histo command provides equivalent
functionality.
-XX:-PrintConcurrentLocks
Print java.util.concurrent locks in Ctrl-Break thread dump. Manageable.
(Introduced in 6.) The jstack -l command provides equivalent
functionality.
-XX:-PrintCommandLineFlags
Print flags that appeared on the command line. (Introduced in 5.0.)
-XX:-PrintCompilation
Print message when a method is compiled.
]
转自:http://relaxbod.iteye.com/blog/1294530
分享到:
相关推荐
总结,理解并掌握JVM参数和GC机制是Java开发中的重要技能。通过合理配置JVM参数,我们可以有效控制内存使用,优化程序性能,并减少垃圾收集带来的负面影响。同时,根据应用特性选择合适的垃圾收集策略,能进一步提高...
【HotSpot GC官网文档截图 - 20200917】是一个珍贵的资源集合,包含了一系列关于Java HotSpot虚拟机(JVM)垃圾收集器(GC)的官方文档截图。这些截图详细介绍了GC的发展历程、不同版本的特性、选择GC的策略以及调优...
本节介绍的JVM参数如下: | 参数 | 说明 | |----------------|----------------------------------------------------------| | `-version` | 打印JVM版本信息 | | `-showversion` | 打印版本信息并执行程序 | | `-...
同时,会讲解如何通过JVM参数调整内存大小、设置垃圾收集策略、优化线程池等,以达到最佳的运行效果。 书中还可能讨论到HotSpot的编译优化技术,如逃逸分析、标量替换、内联等,这些都是JIT编译器提高性能的关键...
Hotspot源码是Java开发中的重要参考资料,它揭示了Java虚拟机(JVM)的工作原理。Oracle JDK中的Hotspot JVM是Java程序运行的核心,负责字节码解释、编译优化以及垃圾回收等关键任务。Hotspot源码的分析有助于开发者...
3. 迁移 JVM 参数:将 JRockit 的 JVM 参数迁移到 HotSpot,例如堆大小、垃圾回收器参数等。 4. 迁移 Java 应用程序:将 Java 应用程序迁移到 HotSpot 环境,包括重新编译和重新部署应用程序。 5. 测试和优化:对 ...
通过调整JVM参数,如-Xms、-Xmx设置堆大小,-XX:NewRatio调整新生代和老年代比例,可以实现性能优化。 6. 字节码文件结构深度剖析: .class文件包含类的元数据和字节码指令,理解字节码的构成和执行逻辑对于理解...
二、常用JVM参数详解 1. -Xms和-Xmx:设置Java堆的初始大小和最大大小,例如-Xms256m -Xmx1024m,以保证JVM有充足的内存运行应用。 2. -XX:NewRatio:设定新生代和老年代的比例,有助于控制垃圾收集频率和内存分配...
HotSpot是JVM的一种实现,是Java虚拟机历史上最重要的技术之一。 JIT编译是JVM中的一个关键特性,它通过即时编译技术将Java字节码动态编译成本地代码,提高程序的执行速度。这个过程包括解释执行和JIT编译,解释...
- 类似于HotSpot JVM的即时编译(JIT)技术,将频繁执行的字节码编译成机器码,以提高性能。 - 垃圾收集参数调整,例如设置新生代和老年代的比例,以优化不同应用的内存需求。 - 栈帧优化,如逃逸分析,帮助确定...
HotSpot JVM是Oracle提供的JVM实现,其中包含多种垃圾收集器,针对不同的性能需求和场景提供了多样化的选择。 1. Serial收集器:这是最基本的单线程垃圾收集器,适用于小型应用或对响应时间要求不高的环境。新生代...
### Sun Hotspot V1.6.0 JVM GC详解 #### 一、JVM结构与GC基础知识 ##### 1.1 JVM内存结构概述 Java虚拟机(JVM)内存主要分为以下几个部分: - **程序计数器(PC Register)**:记录当前线程所执行的字节码指令...
- **HotSpot调优技巧**:通过调整JVM参数,如-Xms、-Xmx控制堆大小,-XX:+UseParallelGC启用并行垃圾回收等方式,可以显著提升性能。 #### 诊断GC问题 - **GC日志分析**:通过分析GC日志,可以发现可能导致性能...
- **JVM参数**:可以配置JVM启动时的参数,用于优化内存分配、垃圾回收等方面。 - **类文件解析**:JVM将类文件中的字节码转换成计算机能够理解的指令执行。 #### 10. 常用工具 - **VisualVM**:是一个可以监控运行...
5. **JVM参数调整**:理解JVM启动参数的意义和作用,如-Xms、-Xmx、-XX:+UseConcMarkSweepGC等,是提升系统性能的关键。教程会指导如何根据系统资源和应用需求设置合适的参数。 6. **并发与多线程**:JVM提供了丰富...
HotSpot VM是Oracle JDK中默认的JVM实现,它提供了一种称为HSDB(HotSpot Debugger Bridge)的工具,用于在运行时查看和分析JVM内部的数据。本篇将通过HSDB的使用案例来探讨HotSpot VM的运行时数据。 首先,我们...
包含参数如下: 1. 内存管理参数 2. 及时编译参数 3. 类型加载参数 4. 多线程相关参数‘ 5. 性能参数 6. 调试参数
6. **内存溢出和性能优化**:理解内存泄漏和内存溢出的原因,如堆内存不足、栈溢出等,以及如何通过调整JVM参数进行性能优化,如设置堆大小、开启并发收集、优化新生代和老年代的比例等。 7. **异常处理与线程调度*...
- 如何通过JVM参数调优来优化应用性能。 - JVM与其他编程语言虚拟机的对比分析。 JVM的深入理解和应用对于开发高性能的Java应用至关重要。通过本次分享,参与者将能够更好地理解JVM的工作原理,从而在实际开发中...