jvm调优

Class NewObject {
    int count;
    boolean flag;
    Object ob;
}
    其大小为:空对象大小(8byte)+int大小(4byte)+Boolean大小(1byte)+空Object引用的大小(4byte)=17byte。但是因为Java在对对象内存分配时都是以8的整数倍来分,因此大于17byte的最接近8的整数倍的是24,因此此对象的大小为24byte。
    
idea bin/idea.exe.vmoptions默认参数
-server  jvm使server模式,特点是启动速度比较慢,但运行时性能和内存管理效率很高,适用于生产环境
-Xms128m
-Xmx512m
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-XX:CICompilerCount=2
-Dsun.io.useCanonPrefixCache=false
-Djava.net.preferIPv4Stack=true
-Djdk.http.auth.tunneling.disabledSchemes=""
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-Djdk.attach.allowAttachSelf
-Dkotlinx.coroutines.debug=off
-Djdk.module.illegalAccess.silent=true

    
    idea下的run configuration
java -Xmx3550m -Xms3550m -Xmn2g -Xss1m  -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MetaspaceSize=128m  -XX:+UseParallelGC -XX:ParallelGCThreads=20   -XX:+UseParallelOldGC 

-Xmn2g:设置年轻代大小为2G。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。

-XX:NewRatio=4:设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5

-XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6

-XX:MaxPermSize=16m:设置持久代大小为16m。  -XX:MetaspaceSize=128m (默认20m)!!!我设置太小 Full gc

XX:MaxMetasaceFreeRatio 也就是70%。会回收 MaxMetaspaceSize=N 默认值为4294967295B(大约4096MB)。

-XX:+UseParallelGC:选择垃圾收集器为并行收集器。此配置仅对年轻代有效。即上述配置下,年轻代使用并发收集,而年老代仍旧使用串行收集。

-XX:ParallelGCThreads=20:配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相等。

-XX:+UseParallelOldGC:配置年老代垃圾收集方式为并行收集。JDK6.0支持对年老代并行收集。

-XX:+PrintGC  -XX:PrintHeapAtGC

-XX:+UseConcMarkSweepGC (指定使用的垃圾收集器,这里使用CMS收集器)  1.9支持


查看jvm状态
jdk/bin目录下点击jconsole.exe即可启动  VisualVM
jconsole概览图和主要的功能:概述、内存、线程、类、VM、MBeans

通过top指令发现,当前5511的线程cup和内存的使用率过高
 jinfo pid 5511
 jstat gcacuse 5511
 jmap -heap 5511
 jstack 5511 | head -50

 

Java版的ps命令,查看java进程及其相关的信息,如果你想找到一个java进程的pid,那可以用jps命令替代linux中的ps命令了

jinfo是用来查看JVM参数和动态修改部分JVM参数的命令
jinfo 11666

jstat命令是使用频率比较高的命令,主要用来查看JVM运行时的状态信息,包括内存状态、垃圾回收等。
jstat -gcutil 11666 1000 3

jstack是用来查看JVM线程快照的命令,线程快照是当前JVM线程正在执行的方法堆栈集合

jmap是用来生成堆dump文件和查看堆相关的各类信息的命令

jhat是用来分析jmap生成dump文件的命令,jhat内置了应用服务器

https://www.cnblogs.com/wxisme/p/9878494.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值