Java8用jmap输出jvm参数
jmap输出
[tomcat@n01 ~]$ /opt/java/jdk1.8.0_101/bin/jmap -heap 11368 Attaching to process ID 11368, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.101-b13using thread-local object allocation. Parallel GC with 2 thread(s)Heap Configuration:MinHeapFreeRatio = 0MaxHeapFreeRatio = 100MaxHeapSize = 2684354560 (2560.0MB)NewSize = 1073741824 (1024.0MB)MaxNewSize = 1073741824 (1024.0MB)OldSize = 1610612736 (1536.0MB)NewRatio = 2SurvivorRatio = 8MetaspaceSize = 21807104 (20.796875MB)CompressedClassSpaceSize = 1073741824 (1024.0MB)MaxMetaspaceSize = 17592186044415 MBG1HeapRegionSize = 0 (0.0MB)Heap Usage: PS Young Generation Eden Space:capacity = 852492288 (813.0MB)used = 420427144 (400.95056915283203MB)free = 432065144 (412.04943084716797MB)49.31741317993014% used From Space:capacity = 113770496 (108.5MB)used = 2299712 (2.19317626953125MB)free = 111470784 (106.30682373046875MB)2.021360617079493% used To Space:capacity = 107479040 (102.5MB)used = 0 (0.0MB)free = 107479040 (102.5MB)0.0% used PS Old Generationcapacity = 1610612736 (1536.0MB)used = 50883368 (48.526161193847656MB)free = 1559729368 (1487.4738388061523MB)3.1592552860577903% used27595 interned Strings occupying 3138384 bytes.
MaxHeapFreeRatio: GC后如果发现空闲堆内存占到整个预估堆内存的N%(百分比),则收缩堆内存的预估最大值, 预估堆内存是堆大小动态调控的重要选项之一. 堆内存预估最大值一定小于或等于固定最大值(-Xmx指定的数值). 前者会根据使用情况动态调大或缩小, 以提高GC回收的效率
MinHeapFreeRatio: GC后如果发现空闲堆内存占到整个预估堆内存的N%(百分比), 则放大堆内存的预估最大值
MaxHeapSize: 即-Xmx, 堆内存大小的上限
InitialHeapSize: 即-Xms, 堆内存大小的初始值
NewSize: 新生代预估堆内存占用的默认值
MaxNewSize: 新生代占整个堆内存的最大值
OldSize: 老年代的默认大小, default size of the tenured generation
NewRatio: 老年代对比新生代的空间大小, 比如2代表老年代空间是新生代的两倍大小. The ratio of old generation to young generation.
SurvivorRatio: Eden/Survivor的值. 这个值的说明, 很多网上转载的都是错的. 8表示Survivor:Eden=1:8, 因为survivor区有2个, 所以Eden的占比为8/10. Ratio of eden/survivor space size. -XX:SurvivorRatio=6 sets the ratio between each survivor space and eden to be 1:6, each survivor space will be one eighth of the young generation.
MetaspaceSize: 分配给类元数据空间的初始大小(Oracle逻辑存储上的初始高水位,the initial high-water-mark ). 此值为估计值. MetaspaceSize设置得过大会延长垃圾回收时间. 垃圾回收过后, 引起下一次垃圾回收的类元数据空间的大小可能会变大
MaxMetaspaceSize: 是分配给类元数据空间的最大值, 超过此值就会触发Full GC. 此值仅受限于系统内存的大小, JVM会动态地改变此值
CompressedClassSpaceSize: 类指针压缩空间大小, 默认为1G
G1HeapRegionSize: G1区块的大小, 取值为1M至32M. 其取值是要根据最小Heap大小划分出2048个区块. With G1 the Java heap is subdivided into uniformly sized regions. This sets the size of the individual sub-divisions. The default value of this parameter is determined ergonomically based upon heap size. The minimum value is 1Mb and the maximum value is 32Mb. Sets the size of a G1 region. The value will be a power of two and can range from 1MB to 32MB. The goal is to have around 2048 regions based on the minimum Java heap size.
指针压缩1. 64位平台上默认打开
1)使用-XX:+UseCompressedOops压缩对象指针
"oops"指的是普通对象指针("ordinary" object pointers)。
Java堆中对象指针会被压缩成32位。
使用堆基地址(如果堆在低26G内存中的话,基地址为0)
2)使用-XX:+UseCompressedClassPointers选项来压缩类指针
对象中指向类元数据的指针会被压缩成32位
类指针压缩空间会有一个基地址
2. 元空间和类指针压缩空间的区别
1)类指针压缩空间只包含类的元数据,比如InstanceKlass, ArrayKlass
仅当打开了UseCompressedClassPointers选项才生效
为了提高性能,Java中的虚方法表也存放到这里
这里到底存放哪些元数据的类型,目前仍在减少
2)元空间包含类的其它比较大的元数据,比如方法,字节码,常量池等。
[tomcat@n01 ~]$ /opt/java/jdk1.8.0_101/bin/jstat -gcutil 11368 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 2.02 0.00 49.32 3.16 92.13 88.17 24 1.220 3 0.637 1.857
S0: Survivor 0区的空间使用率 Survivor space 0 utilization as a percentage of the space's current capacity.
S1: Survivor 1区的空间使用率 Survivor space 1 utilization as a percentage of the space's current capacity.
E: Eden区的空间使用率 Eden space utilization as a percentage of the space's current capacity.
O: 老年代的空间使用率 Old space utilization as a percentage of the space's current capacity.
M: 元数据的空间使用率 Metaspace utilization as a percentage of the space's current capacity.
CCS: 类指针压缩空间使用率 Compressed class space utilization as a percentage.
YGC: 新生代GC次数 Number of young generation GC events.
YGCT: 新生代GC总时长 Young generation garbage collection time.
FGC: Full GC次数 Number of full GC events.
FGCT: Full GC总时长 Full garbage collection time.
GCT: 总共的GC时长 Total garbage collection time.
记录GC日志
加入参数
-verbose:gc -Xloggc:$CATALINA_BASE/logs/gc.log XX:+PrintGCTimeStamps -XX:+PrintGCDetails
例如
export JAVA_HOME=/opt/java/jdk1.8.0_101 export CATALINA_HOME=/opt/tomcat/apache-tomcat-8.0.36-redis export CATALINA_BASE=/home/tomcat/tomcat8_jdk8 export JAVA_OPTS="-server -Xms1280m -Xmx1280m -XX:MaxNewSize=896m -Djava.awt.hea dless=true -verbose:gc -Xloggc:$CATALINA_BASE/logs/gc.log -XX:+PrintGCTimeStamps-XX:+PrintGCDetails" cd $CATALINA_HOME/bin ./catalina.sh start
如果jvm进程不明原因退出, 可以查看syslog, 位置是 /var/log/messages
-XX:MaxTenuringThreshold 垃圾最大年龄, 如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代. 对于年老代比较多的应用,可以提高效率.如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活 时间,增加在年轻代即被回收的概率. 该参数只有在串行GC时才有效.
jdk内存实际是jvm内存,jvm有一个运行时数据区,其实就是对这一部分的大小分配。
运行时数据区通常包括这几个部分:程序计数器(Program Counter Register)、Java栈(VM Stack)、本地方法栈(Native Method Stack)、方法区(Method Area)、堆(Heap)
- Xss:每个线程的stack大小(栈)
- Xmx:JAVA HEAP的最大值、默认为物理内存的1/4
- Xms:JAVA HEAP的初始值,server端最好Xms与Xmx一样
- Xmn:JAVA HEAP young区的大小
- XX:PermSize:设定内存的永久保存区域
- XX:MaxPermSize:设定最大内存的永久保存区域
在JDK1.8中,取消了PermGen,取而代之的是Metaspace,所以PermSize和MaxPermSize参数失效,取而代之的是
-XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m
- 1
修改JDK内存
linux下:在tomcat的bin目录下编辑catalina.sh
cygwin=false上面加入
JAVA_OPTS="-Xms1024m -Xmx2048m -Xss1024K -XX:MetaspaceSize=512m
-XX:MaxMetaspaceSize1024m"
Java8用jmap输出jvm参数相关推荐
- Java8 jvm参数
jmap输出 [tomcat@n01 ~]$ /opt/java/jdk1.8.0_101/bin/jmap -heap 11368 Attaching to process ID 11368, pl ...
- JVM 参数及含义(适用于 JDK7及之前)
文章目录 1.JVM参数的含义 1.1.JDK7版本的主要参数 1.2.JDK8版本的重要特有参数 2.并行收集器( ParallelGC )相关参数 3.CMS相关参数 4.辅助信息 5.常见配置汇 ...
- Tomcat 调优及 JVM 参数优化
Tomcat 本身与 JVM 优化 Tomcat:调整Server.xml JVM:bat启动服务方式的话修改catalina.bat 服务式启动的话参考:http://www.cnblogs.com ...
- JVM系列三:JVM参数设置、分析
2019独角兽企业重金招聘Python工程师标准>>> 不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM.GC的参数,可以极大 ...
- JVM参数设置和分析
转自:http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html 不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断 ...
- JVM - 要上线了,JVM参数还没正儿八经的估算过咋办?
文章目录 Pre jstat 评估内存使用及GC压力的整体情况 jstat -gc PID -gcutil 输出主要关注已使用空间占总空间的百分比 -gccause 额外输出导致上一次GC产生的原因 ...
- Java虚拟机:常见JVM参数配置和GC性能优化
一.常见的JVM参数配置: 1.垃圾回收统计信息: -XX:+PrintGC 打印GC简要信息 -XX:+PrintGCDetails打印GC的详细信息 -XX:+PrintGCTimeSta ...
- 35.JVM 参数(JVM中的各种参数及含义、收集器相关、PrintGC等各种辅助参数)
35.JVM 参数 说下下面jvm参数含义: -server -Xms512m -Xmx512m -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m - ...
- JVM参数设置、分析
转载自 JVM参数设置.分析 不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM.GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方 ...
最新文章
- 重磅 |《企业埋点体系搭建方法论及实践经验》白皮书上线
- angularjs的$on、$emit、$broadcast
- 订单操作-分页查询所有订单
- 为什么B+树比B树更适合做数据库索引
- mysql模糊查询 or_mysql的模糊查询
- 如何彻底关闭windows defender
- 中文信息处理(四)—— 神经网络基础
- c语言成绩管理系统的作用,C语言实现班级成绩管理系统
- js学习小计5-零宽断言
- Javaweb 新浪云平台部署
- Linux 命令(186)—— atq 命令
- spring boot整合jsp报错 Whitelabel Error Page 500或者404 问题处理
- java -- 函数/方法
- vue+elementUI上传图片
- 本科计算机科学与技术毕业论文题目,(计算机科学与技术本科毕业论文选题.doc...
- 黑群晖安装常见问题以及资源分享
- Beyond compare用法详解
- A 标签下载文件 Header 中带上用于鉴权的 Token
- 外贸采购合同管理经常遇到问题要怎么解决
- python读取图片路径_Python小列子-读取照片位置
热门文章
- matlab画爱心的代码
- FITC-Dextran,Dextran-FITC,右旋糖酐荧光素,一种被标记的多糖
- MFC Tab控件的使用方法
- PXE自动安装Linux系统
- 互联网+废品回收项目可行性分析报告
- 《Reducing Word Omission Errors in Neural Machine Translation:A Contrastive Learning Approach》论文阅读笔记
- No overload matches this call. Overload 1 of 2, ‘(type: “*“, handler: WildcardHandler<Record<EventTy
- TP6手册理解之架构·服务
- 量子计算机采用超导技术吗,华人学者一作论文发现不寻常超导体,或可作为量子计算机的“硅”...
- Discuz 批量修改、替换帖子标题或内容