Java

Java 内存限制

2020-05-05  本文已影响0人  Jinwong

1. Java内存设置推荐参数

2. 查看内存使用

java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'
// 可以直接看到内存及cpu占用
top
// 查看某一具体进程程序
top -p pid


//  查看内存占用
ps -aux|grep xxx

// 会打印当前进程详细情况,内存是VmRSS
cat /proc/pid/status 

3. 设置Java 内存限制方法

java -Xms512m -Xmx512m helloword
// 设置启动参数
java -Xms1g -Xmx2g -jar xxx.jar
// 每次jvm进行垃圾回收时显示内存信息,jvm的堆内存设为固定20M
java -verbose:gc -Xms20M -Xmx20M
vi ~/.bashrc
 
export JAVA_TOOL_OPTIONS='-Xms30g -XMx30g'
 
source ~/.bashrc

注意:

  1. 设置内存限制最好检查一下物理内存是否充足
  2. 另外注意一台机器上多个jar应用,建议分别各个程序的内存限制
  3. 设置内存限制防止程序超过系统物理最大限制内存,从而被系统杀掉
  4. 限定的内存不能低于程序正常需要,当程序QPS大、耗内存任务比较多,内存限制不用设置过小
  5. 当程序运行时候超过程序的设置的内存限制,会不断的gc,如果还不够,会让该线程直接OOM,从而释放内存,然后如果此线程还不能回收,java会不断的启动gc线程回收内存,最后CPU飚满,java应用没响应
  6. -Xmx设置的是总堆内存限制,但是JVM运行过程中到底会向操作系统申请多少内存,这个是由JVM在运行过程中动态决定的,我们无法设置,比如JVM本身对堆内存管理,垃圾回收,动态库加载等等都不在堆内存限制范围内
上一篇 下一篇

猜你喜欢

热点阅读