常见虚拟机堆相关的配置参数

堆相关的配置参数

-Xmx

最大堆空间

-Xms

初始堆空间大小,如果初始堆空间耗尽,JVM会对堆空间扩容,其扩展上限为最大堆空间。通常-Xms与-Xmx设置为同样大小,避免扩容造成性能损耗。

-Xmn

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

-XX:SurvivorRatio

设置新生代中eden空间和from/to空间的比例关系。

-XX:SurvivorRatio=eden/from=eden/to

例如:-Xmx20m -Xms20m –Xmn1m –XX:SurvivorRatio=2

新生代大小为512KB(eden)+256KB(from)+256KB(to)=1MB(Survivor),
eden区为512KB总可用新生代为512KB(eden)+256KB(from或to)=768KB。(新生成的对象会分配在eden区,如果eden区占满后会触发YoungGC,将不可回收的对象放入from或to,并且年龄+1)

-XX:NewRatio

设置新生代和老年代的比例

-XX:NewRatio=老年代/新生代

例如:-Xmx20m -Xms20M –XX:NewRatio=2 新生代大小为20MB*1/3=6MB ,老年代为13MB左右。

设置时应尽可能将对象预留在新生代,减少老年代GC的次数(FullGC)

-XX:MaxTenuringThreshold

设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概论。

-XX:PretenureSizeThreshold

令大于这个设置值的对象直接在老年代分配,避免在Eden区及两个Survivor区之间发生大量的内存复制。PretenureSizeThreshold参数只对Serial和ParNew两款收集器有效,Parallel Scavenge收集器不认识这个参数,Parallel Scavenge收集器一般并不需要设置。如果遇到必须使用此参数的场合,可以考虑ParNew加CMS的收集器组合。

-XX:+HeapDumpOnOutOfMemoryError

当发生内存溢出时导出堆信息

-XX:+HeapDumpPath

-XX:+HeapDumpPath=/opt/OOM.dump

当发生内存溢出时导出堆信息指定输出的存放路径。

-XX:OnOutOfMemoryError

当发生内存溢出时可以执行指定脚本

如:

-XX:OnOutOfMemoryError=$JAVA_HOME/bin/Printstack

Printstack $JAVA_HOME/bin/jstack –F %1 > /opt/stack

可打印当前线程的信息

参考资料

https://www.cnblogs.com/hanlinhu/p/9487049.html

原文地址:https://www.cnblogs.com/Ha5him/p/11545234.html

时间: 2024-10-07 11:11:21

常见虚拟机堆相关的配置参数的相关文章

了解java虚拟机—堆相关参数设置(3)

堆相关配置 -Xmx 最大堆空间 -Xms 初始堆空间大小,如果初始堆空间耗尽,JVM会对堆空间扩容,其扩展上限为最大堆空间.通常-Xms与-Xmx设置为同样大小,避免扩容造成性能损耗. -Xmn 设置新生代大小,设置一个较大的新生代会减少老年代的大小,新生代的大小一般设置为整个堆空间的1/3 或者1/4. -XX:SurvivorRatio 设置新生代中eden空间和from/to空间的比例关系. -XX:SurvivorRatio=eden/from=eden/to 例如:-Xmx20m -

【原创】MySQL性能优化-I/O相关配置参数

本文介绍InnoDB和MyISAM两种存储引擎的I/O相关参数配置. 1.InnoDB  I/O相关配置 Innodb是一种事务型的存储引擎,为了减少提交事务时产生的io开销,innodb采用了写日志的方式,也就是在事务提交的时候会先写入事务日志中 ,而不是每次都把修改或者数据刷新到数据文件中,这样做是为了提高io的性能,因为事务的修改,使数据和索引文件通常都会映射到表空间随机的位置,所以刷新数据变更到数据文件会产生大量随机io,而记录日志是顺序io,一旦事务日志安全的写到磁盘中,数据就算是持久

Ceph性能优化 之 配置参数调优

该文同时发表在盛大游戏G云微信公众号,粘贴于此,方便各位查阅 Ceph,相信很多IT朋友都听过.因为搭上了Openstack的顺风车,Ceph火了,而且越来越火.然而要用好Ceph却也不是件易事,在QQ群里就经常听到有初学者抱怨Ceph性能太烂,不好用.事实果真如此吗!如果你采用Ceph的默认配置来运行你的Ceph集群,性能自然不能如人意.俗话说,玉不琢,不成器:Ceph也有它的脾性,经过良好配置优化的Ceph性能还是不错的.下文简单分享下,盛大游戏G云在Ceph优化上的一些实际经验,如有错误之

Java虚拟机配置参数(目前不够完善)

最近看了有关虚拟机的书籍,发现有很多虚拟机配置参数不知道,特来记录一下, -XX: MaxDirectMemorySize--->设置直接内存,不设置与Java堆内存最大值一致 -XX:PermSize和-XX:MaxPermSize--->设置方法区大小 -Xoss--->设置本地方法栈大小 -XX:+HeapDumpOnOutOfMemoryError--->生成内存溢出快照(查看内存溢出快照的工具,安装JDK时,有自带了几种工具,具体怎么使用百度.谷歌) -XX:+/-Use

(入门贴)JVM堆内存相关的启动参数:年轻代、老年代和永久代的内存分配

如果想观察JVM进程占用的堆内存,可以通过命令工具jmap或者可视化工具jvisualvm.exe.JVM这些启动参数都拥有默认值,如果想了解JVM的内存分配策略,最好手动设置这些启动参数.再通过JDK提供的工具的统计结果,进行对比,就比较容易理解这些内存分配的理论知识.运行环境是win7 32位操作系统,JDK1.7.0_60版本. 测试代码和JVM启动参数如下: public class Test { public static void main(String[] args) { int

Java虚拟机详解----常用JVM配置参数

本文主要内容: Trace跟踪参数 堆的分配参数 栈的分配参数 零.在IDE的后台打印GC日志: 既然学习JVM,阅读GC日志是处理Java虚拟机内存问题的基础技能,它只是一些人为确定的规则,没有太多技术含量. 既然如此,那么在IDE的控制台打印GC日志是必不可少的了.现在就告诉你怎么打印. (1)如果你用的是Eclipse,打印GC日志的操作如下: 在上图的箭头处加上-XX:+PrintGCDetails这句话.于是,运行程序后,GC日志就可以打印出来了: (2)如果你用的是IntelliJ

Java虚拟机详解03----常用JVM配置参数

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4736162.html 本文主要内容: Trace跟踪参数 堆的分配参数 栈的分配参数 零.在IDE的后台打印GC日志: 既然学习JVM,阅读GC日志是处理Java虚拟机内存问题的基础技能,它只是一些人为确定的规则,没有太多技术含量. 既然如此,那么在IDE的控制台打印GC日志是必不可少的了.现在就

JVM堆内存相关的启动参数:年轻代、老年代和永久代的内存分配

如果想观察JVM进程占用的堆内存,可以通过命令工具jmap或者可视化工具jvisualvm.exe.JVM这些启动参数都拥有默认值,如果想了解JVM的内存分配策略,最好手动设置这些启动参数.再通过JDK提供的工具的统计结果,进行对比,就比较容易理解这些内存分配的理论知识.运行环境是win7 32位操作系统,JDK1.7.0_60版本. 测试代码和JVM启动参数如下: public class Test { public static void main(String[] args) { int

使用VMware安装linux虚拟机以及相关配置

前言 使用VMware安装虚拟机这个一般都知道,操作简单.而本文主要讲使用虚拟机的后续相关配置.并记录使用过程中遇到的问题以及一些技巧.本篇文章以后回持续更新的... 安装包准备 VM:12 Linux:CentOS 7.0 百度云盘: 链接:https://pan.baidu.com/s/1geEAtpx 密码:r503 一.CentOS 使用 1,安装CentOS 下载VMware Workstation Pro 和CentOS 系统. 成功安装之虚拟机软件后,点击新建虚拟机,安装已经下载好