查看&修改JVM运行参数方法小结

查看&修改JVM运行参数方法小结

查看JVM参数状态的方法

1、JDK本身提供了许多查看JVM运行参数,状态的工具,如 Jmap,Jstat,VisualVM等;

2、也可以直接在程序中通过RunTime类查看JVM内存信息:

1

Runtime.getRuntime().maxMemory();//最大可用内存,对应-Xmx

2

Runtime.getRuntime().freeMemory();//当前JVM空闲内存

3

Runtime.getRuntime().totalMemory();//当前JVM占用的内存总数,其值相当于当前JVM已使用的内存及freeMemory()的总和

maxMemory():为JVM的最大可用内存,可通过-Xmx设置;

totalMemory():为当前JVM占用的内存总数,totalMemory = JVM已使用的内存 + freeMemory 会随着JVM使用内存的增加而增加;

freeMemory():为当前JVM空闲内存,因为JVM只有在需要内存时才占用物理内存使用,所以freeMemory()的值一般情况下都很小,freeMemory() = maxMemory()-totalMemory()+freeMemory();


JVM运行参数基本解释

1、基本的JVM内存参数:

-Xmx

JVM堆可用内存最大值;
默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;

-Xms

JVM堆可用内存初始值;
Server端JVM最好将-Xms和-Xmx设为相同值(可以避免每次垃圾回收后JVM重新分配内存);
开发测试机、Clinet端JVM 可以保留默认值,以节省内存;

-Xmn

JVM堆新生代区大小;
JVM堆内存大小 = 新生代大小+ 老年代大小 + 永久代大小(仅sun的JVM拥有永久代),sun推荐Xmn设置为Xmx的3/8;

-Xss

每个线程的Stack堆栈大小;
JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K;
在相同物理内存下,减小该值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,一般在3000~5000左右;

典型的JVM内存参数配置示例:

1

-Xmx3550m

2

-Xms3550m

3

-Xmn2g

4

-Xss128k

2、常见的JVM行为参数

Java启动参数共分为3类;

标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;

非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;

非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用;

参数及默认值

描述

-XX:-DisableExplicitGC

禁止调用System.gc();但JVM的gc仍然有效

-XX:+MaxFDLimit

最大化文件描述符的数量限制

-XX:+ScavengeBeforeFullGC

新生代GC优先于Full GC执行

-XX:+UseGCOverheadLimit

在抛出OOM之前限制jvm耗费在GC上的时间比例

-XX:-UseConcMarkSweepGC

对老年代采用并发标记交换算法进行GC

-XX:-UseParallelGC

启用并行GC

-XX:-UseParallelOldGC

对Full GC启用并行,当-XX:-UseParallelGC启用时该项自动启用

-XX:-UseSerialGC

启用串行GC

-XX:+UseThreadPriorities

启用本地线程优先级

参数及默认值

描述

-XX:LargePageSizeInBytes=4m

设置用于Java堆的大页面尺寸

-XX:MaxHeapFreeRatio=70

GC后java堆中空闲量占的最大比例

-XX:MaxNewSize=size

新生成对象能占用内存的最大值

-XX:MaxPermSize=64m

老年代对象能占用内存的最大值

-XX:MinHeapFreeRatio=40

GC后java堆中空闲量占的最小比例

-XX:NewRatio=2

新生代内存容量与老年代内存容量的比例

-XX:NewSize=2.125m

新生代对象生成时占用内存的默认值

-XX:ReservedCodeCacheSize=32m

保留代码占用的内存容量

-XX:ThreadStackSize=512

设置线程栈大小,若为0则使用系统默认值

-XX:+UseLargePages

使用大页面内存


设置JVM运行参数的方法

1、在命令行中启动并使用JVM时:

1

java -Xmx128m -Xms64m -Xmn32m -Xss16m Test //假设测试的类是Test

2、在Eclpse中启动JVM时:

方法A:

在eclipse根目录下打开【eclipse.ini】,默认内容如下:

1

-vmargs

2

-Xms40m

3

-Xmx256m

-vmargs表示以下为虚拟机设置参数,可修改其中的参数值,也可添加-Xmn,-Xss,另外,eclipse.ini内还可以设置非堆内存,如:-XX:PermSize=56m,-XX:MaxPermSize=128m。

方法B

打开【eclipse>>窗口>>首选项>>Java>>已安装的JRE】(对在当前开发环境中运行的java程序皆生效)

编辑当前使用的JRE,在缺省VM参数中输入:-Xmx128m -Xms64m -Xmn32m -Xss16m

方法C:

打开【eclipse>>运行>>运行>>Java应用程序】(只对所设置的java类生效)

选定需设置内存分配的类-自变量,在VM自变量中输入:-Xmx128m -Xms64m -Xmn32m -Xss16m

※如果在同一开发环境中同时进行了B和C设置,则B设置生效,C设置无效,如:

3、在IDEA中启动JVM时:
打开 【IDEA 安装目录>>bin 】,其中有两个 vmoptions 文件,需针对不同的JDK进行配置:

32 位:idea.exe.vmoptions

64 位:idea64.exe.vmoptions

1

-Xms512m

2

-Xmx1024m

3

-XX:MaxPermSize=512m

4

-XX:ReservedCodeCacheSize=225m

5

-XX:+UseConcMarkSweepGC

6

-XX:SoftRefLRUPolicyMSPerMB=50

7

-ea

8

-Dsun.io.useCanonCaches=false

9

-Djava.net.preferIPv4Stack=true

4、在Tomcat服务器中启动JVM时:

方法A:

设置环境变量:

变量名:CATALINA_OPTS

变量值:-Xmx128m -Xms64m -Xmn32m -Xss16m

方法B

打开【Tomcat根目录>>bin文件夹>> catalina.bat或 catalina.sh 】,编辑,将其中的TALINA_OPTS%(共有四处)替换为:-Xmx128m -Xms64m -Xmn32m -Xss16m

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JVM运行参数的设置需要根据具体的应用场和需求来进行调整,以下是一些常见的JVM运行参数设置建议值: 1. 初始堆大小(-Xms)和最大堆大小(-Xmx):可以根据应用的内存需求来设置。一般建议将初始堆大小和最大堆大小设置为相同的值,以避免堆大小动态调整带来的性能开销。例如,可以设置为 -Xms2g -Xmx2g 表示初始堆大小和最大堆大小都为2GB。 2. 年轻代大小(-Xmn):年轻代是对象分配的主要区域,可以根据应用的对象创建和回收频率来设置。一般建议将年轻代大小设置为整个堆大小的1/3到1/4左右。例如,可以设置为 -Xmn1g 表示年轻代大小为1GB。 3. 年老代大小(-XX:MaxTenuringThreshold):年老代是存放长时间存活的对象的区域,可以根据应用的对象生命周期来设置。一般建议将年老代大小设置为整个堆大小的2/3到3/4左右。例如,可以设置为 -XX:MaxTenuringThreshold=15 表示对象经过15次垃圾回收后仍然存活,则会被移到年老代。 4. 垃圾回收器选择(-XX:+UseParallelGC):根据应用的性能需求和硬件环境来选择合适的垃圾回收器。如果对吞吐量要求较高,可以选择并行垃圾回收器(-XX:+UseParallelGC);如果对延迟要求较高,可以选择CMS垃圾回收器(-XX:+UseConcMarkSweepGC)或者G1垃圾回收器(-XX:+UseG1GC)。 5. 元空间大小(-XX:MaxMetaspaceSize):元空间用于存放类的元数据信息,可以根据应用的类加载和卸载频率来设置。一般建议将元空间大小设置为应用所需的最大类数量的两倍左右。例如,可以设置为 -XX:MaxMetaspaceSize=256m 表示元空间大小为256MB。 请注意,以上只是一些常见的JVM运行参数设置建议值,具体的设置还需要根据实际情况进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值