第三章 实战Java虚拟机——常用java虚拟机参数

垃圾回收跟踪参数

-XX:+PrintGC 打印GC日志,精简

-XX:+PrintGCDetails 打印GC日志详细信息

-XX:+PrintHeapAtGC  在每次GC前后分别打印堆的信息

-XX:+PrintGCApplicationCurrentTime  打印应用程序执行之间

-XX:+PrintGCApplicationStoppedTime 打印应用程序由于GC而产生的停顿时间

-XX:+PrintGCRefferenceGC 跟踪系统内的软应用、弱引用、虚引用和Finallize队列

类加载和卸载的跟踪

-verbose:class 跟踪类的加载和卸载

-XX:+TraceClassLoading 单独跟踪类的加载

-XX:+TraceClassUnloading 单独跟踪类的卸载

系统参数查看

-XX:+PrintVMOptions 打印虚拟机命令行接受的显示参数

-XX:+PrintCommandLineFlags 打印虚拟机的显示和隐式参数,隐式参数未必是通过命令行给出的,可能是由虚拟机启动时自行设置的

-XX:+PrintFlagsFinal 打印所有的系统参数

堆得配置参数

-Xmx 指定堆得最大值,例如,-Xmx20M设置堆得最大值为20M

-XX:MaxHeapSize 指定堆的最大值,例如,-XX:MaxHeapSize=20M

-Xms 与-XX:InitialHeapSize 两种方式指定堆的初始大小

提示:在实际工作中,可以直接讲初始堆-Xms和最大堆-Xmx设置相等。这样的好处可以减少程序运行时进行的垃圾回收次数,从而提高程序的新能。

新生代的配置

-Xmn 用于设置新生代的大小,设置一个较大的新生代会减少老年代的大小,新生代的大小一般设置为整个堆空间的1/3或者1/4左右

-XX:SurvivorRatio 用来设置新生代空间和from/to空间的比例关系 eden/from=eden/to

-XX:NewRatio 用来设置老年代和新生代的比例关系  老年代/新生代

堆溢出排查参数配置

-XX:+HeapDumpOnOutOfMemoryError 在内存溢出是到处整个堆信息

-XX:HeapDumpPath 指定导出堆的存放路径

在发生堆溢出时可以导出堆信息外,虚拟机还允许在发生错误是执行一个脚本文件。该文件可以用于崩溃程序的自救、报警和通知,也可以帮助开发人员获得更多的系统信息,如完整的线程转储。

例如:C:/Program Files/JAVA/javaSE1.8/jdk1.8/bin/jstack -F %1 > D:/06Log/JVM/gc/jstack.txt 导出java虚拟机进程的线程信息,并保存到jstack.txt文件中。

参数设置如:-Xmx20M -Xms5M "-XX:OnOutOfMemoryError=C:/Program Files/JAVA/javaSE1.8/jdk1.8/tools/printstack.bat %p" -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:/06Log/JVM/gc/a.dump

非堆内存参数配置

方法区配置:

JDK1.7以前版本,可以使用-XX:PermSize 和 -XX:MaxPermSize配置永久区的大小。

-XX:PermSize 初始永久区大小

-XX:MaxPermSize 最大永久区大小

JKD1.8中,永久区被彻底移除,使用了新的元数据区存放类的元数据。默认情况下,元数据区只受系统可用内存的限制,但依然可以使用参数-XX:MaxMetaspaceSize指定永久区的最大可用值。

栈配置

-Xss 设置线程栈的大小

直接内存配置

-XX:MaxDirectMemorySize

直接内存也是Java程序中非常重要的组成部分,特别是在NIO被广泛使用后,直接内存的使用也变得非常普遍。直接内存跳过了Java堆,使Java程序可以直接访问原生堆空间,因此,从一定程度上加快了内存空间的访问速度。但是,武断的认为使用直接内存一定可以提高内存访问速度也是不正确的。最大可用直接内存可以使用参数-XX:MaxDirectMemorySize设置,如不设置,默认值为最大堆空间,即-Xmx。当直接内存使用量达到最大直接内存时,就会触发垃圾回收,如果垃圾回收不能有效的释放足够的空间,直接内存溢出依然会引起系统的OOM。

在访问读写直接内存比堆内存快,在申请空间时,堆空间的速度远远高于直接内存。所以,直接内存适合申请次数少,访问比较频繁的场合。如果内存空间需要频繁申请,则并不适合使用直接内存。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值