描述一下hotspot jvm的内存结构,jvm和hotspot
本文档提供了有关典型命令行选项和环境变量的信息,这些选项和变量会影响Java热点虚拟机的性能特征。除非另有说明,本文中的所有信息都与Java热点客户端虚拟机和Java热点服务器虚拟机相关。
希望移植到Java HotSpot虚拟机的JDK 1号。3 .0以前版本的用户应该看到Java热点等同于确切的伏特计标志。
Java HotSpot虚拟机选项的类别Java HotSpot虚拟机识别的标准选项在Windows、Solaris和Linux操作系统的爪哇应用程序启动器参考页中有所描述。本文专门讨论Java HotSpot虚拟机识别的非标准选项:
以-Xare开头的选项是非标准选项(不保证在所有伏特计实现上都受支持),在java开发工具包的后续版本中可能会有更改,恕不另行通知。用-xxa指定的选项不稳定,不建议随意使用。这些选项如有更改,恕不另行通知。
列出了用于Solaris Sparc的Java SE 6,带-server的一些有用的-XX选项默认值。某些选项可能因架构/操作系统/JVM版本而异。描述中列出了具有不同默认值的平台。
布尔选项用-XX:选项打开,用-XX:-选项关闭。用-XX:选项=数字设置数字选项。数字可以包括代表兆字节的" M "或“M”,代表千字节的" K "或“K”,以及代表千兆字节的" G "或“G”(例如,32k与32768相同)。字符串选项用-XX:选项=字符串设置,通常用于指定文件、路径或命令列表
标记为可管理的标志可通过java开发工具包管理界面(com。星期日管理。热点诊断mxbean API)和工具动态写入。在监视和管理Java SE 6平台应用程序中,图3显示了一个例子。可管理标志也可以通过金佛旗设置。
以下选项大致分为三类。
行为选项更改虚拟机的基本行为。性能调优选项是可用于调优虚拟机性能的旋钮。调试选项通常支持跟踪、打印或输出虚拟机信息. XX:-AllowUserSignalHandlers
如果应用程序安装了信号处理程序,不要抱怨。(仅与操作系统和Linux操作系统相关。)
-XX:AltStackSize=16384
备用信号堆栈大小(以千字节为单位)。(仅与操作系统相关,已从5.0中删除。)
-XX:-DisableExplicitGC
禁用对System.gc()的调用,JVM仍然会在必要时执行垃圾收集。
-XX:failovertldverifier
当新的类型检查器失败时,故障转移到旧的验证器。(6年推出。)
-XX: HandlePromotionFailure
最年轻的一代收集不需要保证所有活的对象的完全提升。(在1.4.2更新11中引入)【5.0及更早版本:假。]
-XX: MaxFDLimit
将文件描述符的数量增加到最大。(仅与操作系统相关。)
-XX:PreBlockSpin=10
与-XX:使用旋转一起使用的旋转计数变量。控制在输入操作系统线程同步代码之前允许的最大自旋迭代次数。(1.4.2中介绍。)
-XX:-RelaxAccessControlCheck
放松验证器中的访问控制检查。(6年推出。)
-XX:scavenbeforefullgc
在全面乔治勋章之前进行年轻一代GC .(1.4.1中介绍。)
-XX: UseAltSigs
对于伏特计内部信号,使用替代信号,而不是SIGUSR1和信号2 .(在1.3.1更新9、1.4.1中引入。仅与操作系统相关。)
-XX: UseBoundThreads
将用户级线程绑定到内核线程。(仅与操作系统相关。)
-XX:-UseConcMarkSweepGC
对老一代使用并发标记-清除收集。(在1.4.1中介绍)
-XX: UseGCOverheadLimit
使用一种策略,在抛出内存不足错误之前,限制虚拟机花费在乔治勋章上的时间比例。(6年推出。)
-XX: UseLWPSynchronization
使用基于侧壁压力的同步,而不是基于线程的同步。(1.4.0引入。仅与操作系统相关。)
-XX:-UseParallelGC
对清道夫使用并行垃圾收集。(在1.4.1中介绍)
-XX:-UseParallelOldGC
对完全收集使用并行垃圾收集。启用此选项会自动设置-XX: UseParallelGC .(在5.0更新6中引入。)
-XX:-UseSerialGC
使用串行垃圾收集。(5.0引入。)
-XX:-使用旋转
在输入操作系统线程同步代码之前,在爪哇监视器上启用简单旋转。(仅与1.4.2和5.0相关。)[1.4.2,多处理器Windows操作系统平台:真]
-XX: UseTLAB
使用线程本地对象分配(在1.4.0中引入,在此之前称为使用标题.)[1.4.2和更低版本,x86或带有-客户:错误]
-XX: UseSplitVerifier
使用具有可堆叠的属性的新类型检查器。(5.0引入。)[5.0:假]
-XX: UseThreadPriorities
使用本机线程优先级。
-XX: UseVMInterruptibleIO
用于输入输出操作的此调用被信号所中断之前或之后的线程中断导致OS_INTRPT .(6年推出。仅与操作系统相关。)
返回选项
-XX:侵略性选择
打开点性能编译器优化,这是即将发布的版本中的默认设置。(在5.0更新6中引入。)
-XX:编译阈值=10000
编译前方法调用/分支的数量[-客户:1500]
-XX:LargePageSizeInBytes=4m
设置用于爪哇堆的大页面大小。(在1.4.0更新一中引入amd64: 2m .]
-XX:MaxHeapFreeRatio=70
乔治勋章后堆释放的最大百分比,以避免收缩。
-XX:MaxNewSize=size
新一代的最大大小(以字节为单位)。从1.4开始,MaxNewSize作为新比率的函数进行计算。【1 .3 .1 Sparc:32m;1 .3 .1个x86:2.5米。]
-XX:MaxPermSize=64m
永久世代的大小。[5.0及更高版本:64位虚拟机扩展了30%;1.4 amd64:96m;1 .3 .1-客户端:32米.]
-XX:minheafpreeratio=40
乔治勋章后堆空闲的最小百分比,以避免扩展。
-XX:NewRatio=2
新/老一代人的比例Sparc-client:8;x86-server:8;x86客户端:12。]-客户端:4 (1.3) 8 (1.3.1),x86: 12]
-XX:NewSize=2.125米
新一代虚拟机的默认大小(以字节为单位)[5.0及更高版本:64位虚拟机的规模扩大了30%;x86:1m;x86、5.0及更早版本:640k]
-XX:ReservedCodeCacheSize=32m
保留代码缓存大小(字节)-最大代码缓存大小Solaris 64位、amd64和服务器x86:48m;在1.5.0_06和更低版本中,Solaris 64位和和64:1024米.]
-XX:生存比率=8
伊甸园/幸存者空间大小的比率【Solaris amd64:6;1.3.1: 25中的Sparc5.0和更低版本中的其他操作系统平台:32]
-XX:TargetSurvivorRatio=50
清除后使用的幸存者空间的期望百分比。
-XX:ThreadStackSize=512
线程堆栈大小(千字节)。(0表示使用默认堆栈大小)【Sparc:512;Solaris x86: 320(在5.0和更早版本中是256);Sparc 64位:1024;Linux amd64:1024(5.0及更早版本为0);所有其他0。]
-XX: UseBiasedLocking
启用偏置锁定。有关更多详细信息,请参见此调整示例。(在5.0更新6中引入。)[5.0:假]
-XX: UseFastAccessorMethods
使用得到原语字段的优化版本。
-XX:-使用主义
使用亲密的共享内存。[不接受非操作系统平台。]有关详细信息,请参见亲密共享内存。
-XX:使用大页面
使用大页面内存。(在5.0更新5中引入。)有关详细信息,请参见爪哇对大内存页面的支持。
-XX: UseMPSS
对堆使用多页大小支持(4mb页)。不要与主义一起使用,因为这会取代对主义的需求。(在1.4.0更新1中引入,与Solaris 9和更高版本相关。)[1.4.1及更早版本:假]
-XX: UseStringCache
启用通常分配的字符串的缓存。
-XX:AllocatePrefetchLines=1
使用吉特舞乐编译代码中生成的预取指令进行最后一次对象分配后要加载的缓存行数。如果最后分配的对象是实例,默认值为1;如果是数组,默认值为3。
-XX:AllocatePrefetch 0 -不生成预取指令*d*,
1 -在每次分配后执行预取指令,
2 -执行预取指令时,使用本地线程分配缓冲分配水印指针进行门控。
-XX:使用压缩字符串
对于可以表示为纯美国信息交换标准代码的字符串,使用字节[].(在Java 6 Update 21性能发布中引入)
-XX: OptimizeStringConcat
尽可能优化字符串连接操作。(在Java 6更新20中引入)
返回选项
-XX:错误文件=。/hs_err_pid pid .原木
如果出现错误,将错误数据保存到该文件中。(6年推出。)
-XX:-extendeddtracepropers
启用影响性能的跟踪探测器。(6年推出。仅与操作系统相关。)
-XX:HeapDumpPath=./java_pid pid .见第二部分
堆转储的目录或文件名的路径。可管理。(在1.4.2更新12、5.0更新七中引入。)
-XX:-heapdumponotofmemoryerror
抛出java.lang.OutOfMemoryError时将堆转储到文件。管理。(1 .4 .2更新12,5.0更新七中引入。)
-XX:OnError= cmd args cmd args
出现致命错误时运行用户定义的命令。(在1.4.2更新9中引入。)
-XX:OnOutOfMemoryError= cmd args
煤矿管理局参数
首次引发内存泄漏时运行用户定义的命令。(在1.4.2更新12,6中引入)
-XX:-PrintClassHistogram
在Ctrl-break。管理上打印类实例的直方图。(在1.4.2中介绍jmap-histo命令提供了等效的功能。
-XX:-PrintConcurrentLocks
打印中断线程转储。管理中的java.util .并发锁j stack-l命令提供了等效的功能。
-XX:-PrintCommandLineFlags
打印出现在命令行上的标志。(5.0引入。)
-XX:-PrintCompilation
编译方法时打印消息。
-XX:-PrintGC
在垃圾收集时打印消息
-XX:-printgccdetails
在垃圾收集。易控制的中打印更多细节。(在1.4.0中引入。)
-XX:-printgstimestamps
垃圾收集时打印时间戳。可管理(在1.4.0中引入。)
-XX:-PrintTenuringDistribution
打印任期年龄信息。
-XX:-TraceClassLoading
跟踪类的加载。
-XX:-TraceClassLoadingPreorder
跟踪按引用顺序加载的所有类(未加载)。(1.4.2中介绍。)
-XX:-TraceClassResolution
跟踪常量池解析。(1.4.2中介绍。)
-XX:-跟踪类卸载
跟踪类的卸载。
-XX:-TraceLoaderConstraints
加载器约束的跟踪记录。(6年推出。)
-XX: PerfSaveDataToFile
退出时保存jvmstat二进制数据。
-XX:ParallelGCThreads=
设置新旧并行垃圾收集器中垃圾收集线程的数量。默认值因虚拟机(Java Virtual Machine的缩写)运行的平台而异。
-XX: UseCompressedOops
允许使用压缩指针(对象引用表示为32位偏移量,而不是64位指针)来优化爪哇堆大小小于32gb的64位性能。
-XX: AlwaysPreTouch
在虚拟机(Java Virtual Machine的缩写)初始化期间预接触爪哇堆。因此,在初始化期间,堆的每个页面都会按需归零,而不是在应用程序执行期间递增。
-XX:AllocatePrefetchDistance=
设置对象分配的预取距离。将要写入新对象值的内存被预取到缓存中,其距离(以字节为单位)超过最后分配的对象的地址。每个爪哇线程都有自己的分配点。默认值因虚拟机(Java Virtual Machine的缩写)运行的平台而异。
-XX:InlineSmallCode=
仅当先前编译的方法生成的本机代码小于此值时,才内联该方法。默认值因虚拟机(Java Virtual Machine的缩写)运行的平台而异。
-XX:MaxInlineSize=35
要内联的方法的最大字节码大小。
-XX:FreqInlineSize=
要内联的频繁执行的方法的最大字节码大小。默认值因虚拟机(Java Virtual Machine的缩写)运行的平台而异。
-XX:loopunrolimit=
展开服务器编译器中间表示节点计数小于此值的循环体。服务器编译器使用的限制是该值的函数,而不是实际值。默认值因虚拟机(Java Virtual Machine的缩写)运行的平台而异。
-XX:InitialTenuringThreshold=7
设置用于并行年轻收集器中自适应乔治勋章大小调整的初始期限阈值。保有阈值是对象在被提升到旧代(或保有代)之前在新集合中存活的次数。
-XX:MaxTenuringThreshold=
设置用于自适应乔治勋章大小调整的最大期限阈值。当前最大值是15。并行收集器的默认值为15、CMS的默认值为4。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。