java虚拟机参数

来源:互联网 发布:淘宝店铺关闭激活不了 编辑:程序博客网 时间:2024/06/06 19:55

介绍常用的参数,可能介绍的顺序有点乱

1.栈上分配有一个逃逸分析,只有在server模式下才可以启动逃逸分析,参数:
-server -Xmx10m -Xms10m -XX:+DoEscapeAnalysis -XX:+PrintGCDetails -XX:+EliminateAllocations

-server:在server模式下-Xmx:配置堆的最大内存-Xms:配置堆的最小内存-XX:+DoEscapeAnalysis:开启逃逸分析-XX:PrintGCDetails:遇到GC打印日志-XX:+EliminateAllocations:开启标量替换(允许将对象打撒在分配的栈上)

例子代码:https://github.com/Ericjeff/JVM/blob/master/Function.java

这里写图片描述

[Times:user=0.00 sys=0.00 real=0.00 secs]
user:用户态cpu耗时,sys:系统cpu耗时,real:gc实际经历的时间

-XX:+PrintHeapAtGC:在每次GC前后打印堆的信息-XX:+PrintGCApplicationConcurrentTime:打印应用程序的执行时间-XX:+PrintReferenceGC:跟踪软引用,弱引用,虚引用和Finallize队列-XX:+PrintVMOptions:打印显示参数-XX:PrintCommandLineFlags:打印传给虚拟机的显示和隐式参数-XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps:日期时间

新生代配置:

新生代一般大小为整个堆的1/3到1/4之间-XX:SurvivorRatio=eden/from=eden/to设置eden和from/to的内存空间的比例如-XX:SurvivorRatio=2    eden为from/to的两倍-Xmn:设置新生代的大小-XX:NewRatio=老年代/新生代

堆溢出:

例子路径:https://github.com/Ericjeff/JVM/blob/master/Dump.java

-XX:+HeapDumpOnOutOfMemoryError:在内存溢出时导出这个对信息-XX:HeapDumpPath:导出的路径如:-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=H:/a.dump使用MAT查看(memory analyser)需要有eclipse,因为它是基于eclipse的插件

内存配置:

方法区:1.6,1.7-XX:PermSize 初始大小,-XX:MaxPermSize 最大内存1.8 永久区被移除,使用新的元数据区存放类的元数据,-XX:MetaspaceSize  -XX:MaxMetaspaceSize栈:-Xss指定大小  如-Xss10m 指定为10m直接内存:默认和堆一样大(-Xmx)-XX:MaxDirectMemorySize 

直接内存:https://github.com/Ericjeff/JVM/blob/master/AccessDirectBuffer.java

虚拟机运行模式:

支持clientserver模式使用java -version查看当前模式serverclient相比,server模式启动慢,因为server模式会尝试收集更多关于系统的信息,使用更复杂的优化算法进行程序优化,当系统进入运行稳定时期,会比client模式更快
原创粉丝点击