• Ukieweb

    佳的博客

    曾梦想仗剑天涯,后来工作忙没去。

java8 jvm 中建议设置的启动参数 JAVA_OPTS

JAVA_OPTS="-Xms4096m -Xmx4096m -XX:MetaspaceSize=256m"

这两个参数可以出发 gc

  • Xms/ xmx 用来 设置堆内存的大小 

  • -Xmn: 堆内新生代的大小

  • MetaspaceSize 设置 Metaspace 触发 fullgc 的大小

还可以设置线程的大小, 默认如下:

  • Linux/x86 (64-bit): 1 MB

  • macOS (64-bit): 1 MB

  • Oracle Solaris (64-bit): 1 MB

  • On Windows, the JVM uses the system-wide stack size

-Xss: 减少这个值,可以多生成线程

java 启动命令常用配置

java -javaagent:/skywalking-agent.jar -jar -Xms512m -Xmx512m -Xmn128m -XX:MetaspaceSize=256m -XX:-OmitStackTraceInFastThrow -Dserver.port=8080 config-center-api-1.0.0.jar  --spring.profiles.active=prod

内存参数设置:

-Xms1024m (java堆最大大小) 

-Xmx1024m (java堆默认大小) 

-Xmn256m (新生代大小) 可以通过比例替代

-Xss256k (线程大小) 

-XX:MetaspaceSize=128m (元空间触发gc值) 

  • 如果没有配置-XX:MetaspaceSize,那么触发FGC的阈值是21807104(约20.8m),可以通过jinfo -flag MetaspaceSize pid得到这个值

  • 如果配置了-XX:MetaspaceSize,那么触发FGC的阈值就是配置的值;

  • Metaspace由于使用不断扩容到-XX:MetaspaceSize参数指定的量,就会发生FGC

  • 如果MaxMetaspaceSize设置太小,可能OOM;

-XX:MaxMetaspaceSize=128m (元空间最大大小,默认物理机内存,达到了oom) 

-XX:NewRatio=n: 设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去 metaspace),默认 2,也就是  年轻代:年老代 = 1:2

  • 如果设置为4,那么 年轻代:年老代=1:4,年轻代占整个堆栈的1/5。

-XX:SurvivorRatio=8  年轻代中Eden区两个Survivor区的比值。默认8, 也就是 两个Survivor:Eden = 2:8

  • 如果设置为4,则 两个Survivor区:Eden区=2:4一个Survivor区占整个年轻代的1/6

堆溢出参数设置

  • -XX:+HeapDumpOnOutOfMemoryError(内存溢出时dump堆)

  • -XX:HeapDumpPath=logs/heapdump.hprof(发生OOM时,dump出快照到文件heapdump.hprof)

在Java程序的运行过程中,如果对空间不足,则会抛出内存溢出的错误(Out Of Memory)OOM

Java虚拟机提供了-XX:+HeapDumpOnOutOfMemoryError, 使用该参数可以在内存溢出时导出整个堆信息,与之配合使用的还有参数-XX:HeapDumpPath,可以设置导出堆的存放路径

内存分析工具:Memory Analyzer

配置运行时参数 -Xms1m -Xmx1m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/Demo3.dump

GC  设置

-Xmx3800m -Xms3800m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20

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

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

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

辅助打印信息

-XX:+PrintHeapAtGC(打印GC前后堆内存情况)

-XX:+PrintGCDetails (打印详细的GC日志)

-XX:ErrorFile=logs/java_error%p.log(错误文件,当java发生致命错误时,例如jdk的bug等。记录错误日志用于上报分析)

开启gc.log  把 gc.log 导出来

-verbose:gc

-XX:+PrintGCDetails

-XX:+PrintGCTimeStamps

-XX:+PrintGCDateStamps

-Xloggc:/usr/local/log/gc.log

更改端口的两种方式:

java命令参数:java -jar <path/to/my/jar> --server.port=7788

JDK 参数的方式:java -Dserver.port=7788 -jar <path/to/my/jar>


0
0
下一篇:查看 java jvm 进程线程的命令 适用于其他

0 条评论

老佳啊

85后,大专学历,中原人士,家里没矿。

由于年轻时长的比较帅气,导致在别人眼里,我一直不谈恋爱的原因是清高,实则是自己的小自卑。最大的人生目标就是找一个相知相爱相容的人,共度余生。

和人相处时如果能感受到真诚,会非常注重彼此的关系,对别人没有什么心机,即使有利益冲突,一般也会以和为贵,因为在这个世界上,物质的东西,从来不会吸引到我。

特别迷恋那些大山大水,如果现在还能隐居,可能早就去了。对那些宏伟的有底蕴的人文景观比较不感冒。

从事于IT行业,却一直对厨房念念不忘,由于身材魁梧,总觉得自己上辈子是个将军,可惜这辈子没当兵,也不会打架。