当前位置:网站首页>JVM参数解析 Xmx、Xms、Xmn、NewRatio、SurvivorRatio、PermSize、PrintGC「建议收藏」
JVM参数解析 Xmx、Xms、Xmn、NewRatio、SurvivorRatio、PermSize、PrintGC「建议收藏」
2022-07-31 15:06:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
目录
堆的分配参数
-Xmx 指定最大堆,即堆内存的上线,当实际内存接近上线时会发生GC。 –Xms 最小堆,jvm运行的默认堆大小。 -Xmn 设置新生代大小 -XX:NewRatio 新生代(eden+2*s)和老年代(不包含永久区)的比值。新生代和老年代默认比例是1:2。 4表示 新生代:老年代=1:4,即年轻代占堆的1/5 -XX:SurvivorRatio 设置两个Survivor区和eden的比 8表示 两个Survivor :eden=2:8,即一个Survivor占年轻代的1/10。eden和两个survivor的默认比例是8:1:1 -XX:+HeapDumpOnOutOfMemoryError 发生OutOfMemory是导出堆信息到文件 -XX:+HeapDumpPath 指定导出堆信息路径 -XX:OnOutOfMemoryError 在OOM时,执行一个脚本 下面的命令表示在发生oom时把堆日志存储到/tmp/heapdump.hprof,并且执行sh ~/test.sh命令
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump.hprof -XX:OnOutOfMemoryError="sh ~/test.sh"
永久区分配参数
-XX:PermSize 设置永久区的初始空间 -XX:MaxPermSize 设置永久区最大空间
栈大小分配
-Xss 栈内存容量,通常只有几百k,默认的栈内存为1MB。栈总空间=线程数量*栈容量,所以降低栈内存容量可以加大线程数。当程序请求的栈深度大于虚拟机栈深度的最大限度时会发生栈溢出,一般栈溢出是因为递归调用产生的,递归调用即函数自己调用自己,或者通过其他函数间接调用自己。
大对象直接进入老年代
-XX:PretenureSizeThreshold=1024 对象如果大于或等于此值,会直接分配到老年代里
打印简要GC回收数据
-verbose:gc -XX:+PrintGC
[GC 66048K->11268K(251904K), 0.0210029 secs]
这个参数是在每次发生GC时打印相关信息,[GC 66048K->11268K(251904K), 0.0210029 secs] ,这一行内容表示发生GC前占用堆66048K(约64.5mb),回收后内存为11268K(约11mb),整个堆大小为251904K(约246mb),回收花费了0.0210029 secs(约0.02秒)。
打印详细GC回收数据
-XX:+PrintGCDetails
[GC [PSYoungGen: 66048K->10746K(76800K)] 66048K->11353K(251904K), 0.0171900 secs] [Times: user=0.06 sys=0.00, real=0.01 secs]
打印信息PSYoungGen中的PS是Parallel Scavenge收集器的缩写,属于垃圾收集器的一种。Parallel Scavenge收集器是一个使用复制算法并行多线程的新生代收集器。66048K为收集前的内存,10746K为收集后内存,76800K为整个新生代的默认大小。66048K为堆区在回收前的内存,11353K为堆区在回收后的内存大小,251904K是整个堆区的默认内存容量。0.0171900 secs为整个回收消耗时间,余额0.02秒。[Times: user=0.06(GC用户耗时) sys=0.00(GC系统耗时), real=0.01 secs(GC实际耗时)] -XX:+PrintGCTimeStamps,作用和-XX:+PrintGCDetails相同,加了输出时间戳
指定GC log的位置,以文件输出
-Xloggc:F:\gc1.log
可以在文件中记录每次GC信息,方便排查定位问题。
每次一次GC后,都打印堆信息
-XX:+PrintHeapAtGC
{Heap before GC invocations=12 (full 0):
PSYoungGen total 133632K, used 94610K [0x00000000f5500000, 0x0000000100000000, 0x0000000100000000)
eden space 92160K, 100% used [0x00000000f5500000,0x00000000faf00000,0x00000000faf00000)
from space 41472K, 5% used [0x00000000faf00000,0x00000000fb164930,0x00000000fd780000)
to space 41472K, 0% used [0x00000000fd780000,0x00000000fd780000,0x0000000100000000)
ParOldGen total 175104K, used 65489K [0x00000000e0000000, 0x00000000eab00000, 0x00000000f5500000)
object space 175104K, 37% used [0x00000000e0000000,0x00000000e3ff4460,0x00000000eab00000)
PSPermGen total 131072K, used 21516K [0x00000000d0000000, 0x00000000d8000000, 0x00000000e0000000)
object space 131072K, 16% used [0x00000000d0000000,0x00000000d15031c8,0x00000000d8000000)
[GC [PSYoungGen: 94610K->2684K(127488K)] 160099K->68346K(302592K), 0.0052866 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
Heap after GC invocations=12 (full 0):
PSYoungGen total 127488K, used 2684K [0x00000000f5500000, 0x00000000ffc80000, 0x0000000100000000)
eden space 89600K, 0% used [0x00000000f5500000,0x00000000f5500000,0x00000000fac80000)
from space 37888K, 7% used [0x00000000fd780000,0x00000000fda1f190,0x00000000ffc80000)
to space 40960K, 0% used [0x00000000fac80000,0x00000000fac80000,0x00000000fd480000)
ParOldGen total 175104K, used 65662K [0x00000000e0000000, 0x00000000eab00000, 0x00000000f5500000)
object space 175104K, 37% used [0x00000000e0000000,0x00000000e401f870,0x00000000eab00000)
PSPermGen total 131072K, used 21516K [0x00000000d0000000, 0x00000000d8000000, 0x00000000e0000000)
object space 131072K, 16% used [0x00000000d0000000,0x00000000d15031c8,0x00000000d8000000)
}
这个参数会在每一次GC前后打印堆信息,上述内容为-XX:+PrintHeapAtGC加-XX:+PrintGCDetails打印出的结果。第一段落为GC发生前堆情况,第二段落为GC后的堆情况。 invocations=12 (full 0)表明这是第12次发生GC,其中full GC的次数为0。 PSYoungGen: GC前新生代总内存为133632K(约130mb),已使用为94610K (约92mb)。新生代的eden区使用了92160K(约90mb),使用率为100%。from区和to区为使用率分别为5%和0%。因为from区和to区使用复制回收算法,所以总会有一块内存作为备用内存而不被使用。GC后eden区占用为0%,说明eden的数据已经被回收或者已经发生了晋级。from区从5%的使用率升到了7%,说明有一部分新生代的数据晋级到了from区。 ParOldGen:老年代在GC前总内存为175104K(约171mb),实际占用65489K(约63mb)。而GC后的老年代为65662K(约64mb),说明GC过程中有一部分大对象越过form区直接晋级老年代了。 PSPermGen:永久区的内存情况在GC前后几乎没有发生变化。
监控类的加载
-XX:+TraceClassLoading
[Loaded org.apache.velocity.runtime.parser.VelocityCharStream from file:/velocity-1.6.4.jar]
[Loaded org.apache.velocity.runtime.parser.JJTParserState from file://velocity-1.6.4.jar]
这个方法可以将类加载的所有详细信息打印出来,方便确定虚拟机已经加载了哪些内容。
直方图展示类信息
-XX:+PrintClassHistogram
这个参数需要在tomcat运行时按下Ctrl+Break(thinkpad按Ctrl+fn+B打印),打印所有类的使用情况,排序为占用空间大小倒序。分别表示分别显示:序号、实例数量、总大小、类型,所以打印的第一条信息为序号53346个实例,占用内存7544632B。[C : char[]、[S: short[]、[I:int[]、[B:byte[] 、[I :int[]。constMethodKlass/ methodKlass/ constantPoolKlass/ constantPoolCacheKlass/ instanceKlassKlass/ methodDataKlass 与Classloader相关,常驻与Perm区。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/128256.html原文链接:https://javaforall.cn
边栏推荐
- 分成两栏后文字顺序混乱的问题解决【写期刊论文时】
- Five dimensions to start MySQL optimization
- TRACE32 - SNOOPer-based variable logging
- TRACE32——C源码关联
- Small test knife: Go reflection helped me convert Excel to Struct
- R language moves time series data forward or backward (custom lag or lead period): use the lag function in the dplyr package to move the time series data forward by one day (set the parameter n to a p
- R语言的画图代码及差异性分析[通俗易懂]
- 浏览器自带的拾色器
- NC | 中国农大草业学院杨高文组揭示发现多因子干扰会降低土壤微生物多样性的积极效应...
- [CUDA study notes] First acquaintance with CUDA
猜你喜欢
Kubernetes原理剖析与实战应用手册,太全了
"Listen to me, thank you" can be said in ancient poetry?Tsinghua University has developed an artifact of "Searching Sentences According to Meaning", which can search for the famous sayings you want wi
STM32(十)------- SPI通信
乡村基冲刺港交所:5个月期内亏2224万 SIG与红杉中国是股东
TRACE32——C源码关联
Word table to Excel
Sentinel热点参数限流
Introductory UnityShader learning (2) - the rendering pipeline
Public Key Retrieval is not allowed error solution when DBeaver connects to MySQL 8.x
【CUDA学习笔记】初识CUDA
随机推荐
UnityShader入门学习(一)——GPU与Shader
DBeaver连接MySQL 8.x时Public Key Retrieval is not allowed 错误解决
Efficient use of RecyclerView Section 3
Synchronized和volatile 面试简单汇总
NC | 中国农大草业学院杨高文组揭示发现多因子干扰会降低土壤微生物多样性的积极效应...
Nuget打包并上传教程
R语言计算时间序列数据的移动平均值(滚动平均值、例如5日均线、10日均线等):使用zoo包中的rollmean函数计算k个周期移动平均值
消息队列消息数据存储MySQL表设计
Sentinel安装与部署
WeChat chat record search in a red envelope
"Listen to me, thank you" can be said in ancient poetry?Tsinghua University has developed an artifact of "Searching Sentences According to Meaning", which can search for the famous sayings you want wi
高等数学——常用不定积分公式
工程水文学复习资料
Getting started with UnityShader (1) - GPU and Shader
435. 无重叠区间
OpenShift 4 - Customize RHACS security policies to prevent production clusters from using high-risk registry
基于极限学习机(ELM)进行多变量用电量预测(Matlab代码实现)
TCP详解
leetcode303场周赛复盘
华医网冲刺港股:5个月亏2976万 红杉与姚文彬是股东