当前位置: 首页 > 知识库问答 >
问题:

JVM没有发布虚拟memroy

晋天逸
2023-03-14

我的web应用程序正在抛出OOM错误。它被赋予25GB内存。应用程序已经加载测试,我们看到内存正在增加。但是我希望JVM在GC完成后释放内存。为什么即使在应用程序使用之后,JVM也没有释放虚拟内存。

-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/logs/gcc.log 
-XX:MaxPermSize=96m -XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode -XX:+UseCompressedOops -XX:+UseCompressedStrings
-Xmx30g
top - 02:09:42 up 117 days,  5:24,  4 users,  load average: 0.00, 0.01, 0.05
Tasks: 140 total,   1 running, 139 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  62167808k total, 60854992k used,  1312816k free,    73444k buffers
Swap:        0k total,        0k used,        0k free, 17789504k cached
    
PID   USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
17206 java     20   0 55.1g  40g  12m S  0.3 68.2 298:41.08 java
    

以下是“free”命令输出:

             total       used       free     shared    buffers     cached
Mem:      62167808   60855448    1312360          0      73592   17789532
-/+ buffers/cache:   42992324   19175484
Swap:            0          0          0
    

请欣赏任何解决此问题的线索。

共有1个答案

钱锦
2023-03-14

HotSpot JVM中并不是所有的垃圾收集算法都在GC之后向OS释放虚拟内存。

有两种算法可以做到这一点

  • serial-xx:+useserialgc
  • g1-xx:+useg1gc

您使用的是CMS-xx:+useConcMarkSweepgc,它从不向OS释放内存。

在这里你可以找到所有GC算法的快速总结在热点。

 类似资料:
  • 虚拟商品、卡券商品、网盘商品和下载商品的区别: 一、虚拟商品: 1、虚拟商品是开始日期,指从什么时候开始可以使用。 2、有效期指虚拟商品的有效日期。 3、虚拟商品没有运费、物流的问题。 虚拟商品购买信息: 1、规格项:对商品不同规格的关联。 2、无:指不添加任何规格分类。图片:指添加规格后显示图片。颜色:指添加规格后显示颜色的不同。 3、批量设置:在商品很多的情况下对多个商品价格进行修改的设置。

  • 问题内容: 我正在尝试让Eclipse v3.5(Galileo)在我的计算机上重新运行-以前我没有任何问题地运行过它,但是现在我仍然遇到此错误: Java运行时环境(JRE)或Java开发工具包(JDK)必须可用才能运行Eclipse。搜索以下位置后未找到Java虚拟机:当前路径中的C:\ eclipse \ jre \ javaw.exe 我刚刚完成了JDK和SDK的全新安装。 我有Windo

  • 本文向大家介绍Java虚拟机JVM堆栈区,包括了Java虚拟机JVM堆栈区的使用技巧和注意事项,需要的朋友参考一下 以下是了解JVM堆栈区域的一些关键点- 在创建线程期间,Java虚拟机将创建一个单独的堆栈。 JVM在此堆栈上仅执行两个操作。操作是推入(即插入)和弹出(即删除)。 当前正在执行线程时,与其关联的堆栈称为运行时堆栈。 线程完成的每个方法调用,中间计算,局部变量的分配,调用参数等都作为

  • 本文向大家介绍Java JVM虚拟机运行机制,包括了Java JVM虚拟机运行机制的使用技巧和注意事项,需要的朋友参考一下 一:JVM基础概念          JVM(Java虚拟机)一种用于计算设备的规范,可用不同的方式(软件或硬件)加以实现。编译虚拟机的指令集与编译微处理器的指令集非常类似。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。       

  • Flutter:没有虚拟方法getLongVersionCode(),Sdk 29 有人知道怎么解决吗? /content/pm/packageinfo;或其超类(声明