java虚拟机参数

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

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模式更快
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值