jvm参数

在许多应用中,由于jvm内存太小,不足以支持应用.
jvm的内存大小可以在执行java程序时由-X参数来修改.
比如:
java -Xss1m -Xms1m -Xmx256m 


[size=x-large]1、 heap size [/size]

[size=large]a: -Xmx<n> [/size]
指定 jvm 的最大 heap 大小,如:-Xmx=2g

[size=large]b: -Xms<n> [/size]
指定 jvm 的最小 heap 大小,如:-Xms=2g,
高并发应用建议和-Xmx一样,防止因为内存收缩/突然增大带来的性能影响。

[size=large]c: -Xmn<n> [/size]
指定 jvm 中 New Generation 的大小,如:-Xmn256m。
这个参数很影响性能,如果你的程序需要比较多的临时内存,建议设置到512M,如果用的少,尽量降低这个数值,一般来说128/256足以使用了。

[size=large]d: -XX:PermSize=<n> [/size]
指定 jvm 中 Perm Generation 的最小值,如:-XX:PermSize=32m
这个参数需要看你的实际情况,可以通过jmap 命令看看到底需要多少。

[size=large]e: -XX:MaxPermSize=<n> [/size]
指定 jvm 中 Perm Generation 的最大值,如:-XX:MaxPermSize=64m

[size=large]f: -Xss<n> [/size]
指定 jvm 中线程桟大小,如:-Xss128k
一般来说,webx框架下的应用需要256K。 如果你的程序有大规模的递归行为,请考虑设置到512K/1M。 这个需要全面的测试才能知道。不过,256K已经很大了。 这个参数对性能的影响比较大的。

[size=large]g: -XX:NewRatio=<n> [/size]
指定 jvm 中 Old Generation heap size 与 New Generation 的比例,在使用 CMS GC 的情况下此参数失效,如:-XX:NewRatio=2

[size=large]h: -XX:SurvivorRatio=<n> [/size]
指定 jvm 中 New Generation 中 Eden Space 与一个 Survivor Space 的 heap size 比例,-XX:SurvivorRatio=8,那么在总共New Generation为10m 的情况下,Eden Space为8m

[size=large]i: -XX:MinHeapFreeRatio=<n> [/size]
指定 jvm 中 heap在使用率小 n的情况下,heap进行收缩,Xmx==Xms 的情况下无效,如:-XX:MinHeapFreeRatio=30

[size=large]j: -XX:MaxHeapFreeRatio=<n> [/size]
指定 jvm 中 heap在使用率大于n的情况下,heap进行扩张,Xmx==Xms 的情况下无效,如:-XX:MaxHeapFreeRatio=70

[size=large]k: -XX:LargePageSizeInBytes=<n> [/size]
指定 jvm 中 heap 的分页页面大小,如:-XX:LargePageSizeInBytes=128m


[size=x-large]2: garbage collector (GC)[/size]

[size=large]a: -XX:+UseParallelGC [/size]
指定在 New Generation 使用 parallel collector,并行收集,暂停app threads,同时启动多个垃圾回收thread,不能和 CMS gc 一起使用。系统吨吐量优先,但是会有较长长时间的app pause,后台系统任务可以使用此gc

[size=large]b: -XX:ParallelGCThreads=<n> [/size]
指定 parallel collection 时启动的 thread 个数,默认是物理 processor 的个数。

[size=large]c: -XX:+UseParallelOldGC [/size]
指定在 Old Generation 使用 parallel collector。


[size=large]d: -XX:+UseParNewGC [/size]
指定在 New Generation 使用 parallel collector,是 UseParallelGC 的 gc 的升级版本,有更好的性能或者优点,可以和 CMS gc 一起使用。

[size=large]e: -XX:+CMSParallelRemarkEnabled [/size]
在使用 UseParNewGC 的情况下,尽量减少 mark 的时间。

[size=large]
f: -XX:+UseConcMarkSweepGC [/size]
指 定在 Old Generation 使用 concurrent cmark sweep gc,gc thread 和 app thread 并行 ( 在 init-mark 和 remark 时 pause app thread)。app pause 时间较短,适合交互性强的系统,如 web server。

[size=large]g: -XX:+UseCMSCompactAtFullCollection [/size]
在使用 concurrent gc 的情况下,防止 memory fragmention,对 live object 进行整理,使 memory 碎片减少。
[size=large]
h: -XX:CMSInitiatingOccupancyFraction=<n> [/size]
指示在 old generation 在使用了 n% 的比例后,启动 concurrent collector,默认值是 68,如:-XX:CMSInitiatingOccupancyFraction=70。

[size=large]i: -XX:+UseCMSInitiatingOccupancyOnly [/size]
指示只有在 old generation 在使用了初始化的比例后 concurrent collector 启动收集。

[size=x-large]3、others [/size]

[size=large]a: -XX:MaxTenuringThreshold=<n> [/size]
指 定一个 object 在经历了 n 次 young gc 后转移到 old generation 区,在 linux64 的 java6 下默认值是 15,此参数对于 throughput collector 无效,如:-XX:MaxTenuringThreshold=31。

[size=large]b: -XX:+DisableExplicitGC [/size]
禁止 java 程序中的 full gc,如 System.gc() 的调用. 最好加上么,防止程序在代码里误用了。对性能造成冲击。

[size=large]c: -XX:+UseFastAccessorMethods [/size]
get,set 方法转成本地代码。

[size=large]d: -XX:+PrintGCDetails [/size]
打应垃圾收集的情况如: [GC 15610.466: [ParNew: 229689K->20221K(235968K),0.0194460 secs] 1159829K->953935K(2070976K),0.0196420 secs]。

[size=large]e: -XX:+PrintGCTimeStamps [/size]
打应垃圾收集的时间情况,如: [Times: user=0.09 sys=0.00,real=0.02 secs]。

[size=large]f: -XX:+PrintGCApplicationStoppedTime [/size]
打应垃圾收集时,系统的停顿时间,如: Total time for which application threads were stopped: 0.0225920 seconds。


ps -ef|grep java 这样就看到jvm启动参数。
另外可以在虚拟机中查看内存。
System.out.println("peak_memory=" + Runtime.getRuntime().totalMemory()/1024/1024 + "M");
System.out.println(", max_memory=" + Runtime.getRuntime().maxMemory()/1024/1024 + "M");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值