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

内存已满但未进行垃圾回收

张啸
2023-03-14

我有一个问题:伊甸园100%使用,旧的100%使用,从空间100%使用,但没有垃圾收集触发,没有oom

Eden Space:    
capacity = 859045888 (819.25MB)    
used     = 859045888(819.25MB)   
free     = 0 (0.0MB)
100.0% used 
From Space:    
capacity = 107347968 (102.375MB)    
used     = 12370032(11.796981811523438MB)    
free     = 16441280 (90.57801818847656MB)
0.0% used 
To Space:    
capacity = 107347968 (102.375MB)   
used     = 0 (0.0MB)    
free     = 107347968 (102.375MB)
 0.0% used 
PS Old generation:    
capacity = 1073741824 (1024.0MB)   
used     = 1073741816 (1023.0832290649414MB)    
free     = 8 (7.62399453125E-6MB)
 99.99999925494154% used 
Perm Generation:    
capacity = 268435456 (256.0MB)    
used     = 79784056 (76.08800506591797MB)    
free     = 188651400 (179.91199493408203MB)
 29.721876978874207% used

jstat -gcutil [pid] 1000
   S0     S1     E      O      P     YGC   YGCT    FGC    FGCT     GCT
  11.52  0.00  100.00  100.00  30.28  22   5.87     3    6.136    11.723
  11.52  0.00  100.00  100.00  30.28  22   5.87     3    6.136    11.723
  11.52  0.00  100.00  100.00  30.28  22   5.87     3    6.136    11.723
  11.52  0.00  100.00  100.00  30.28  22   5.87     3    6.136    11.723
  11.52  0.00  100.00  100.00  30.28  22   5.87     3    6.136    11.723
  11.52  0.00  100.00  100.00  30.28  22   5.87     3    6.136    11.723

-xmx2g-xms2g-xmn1g-xx:survivorratio=8-xx:permsize=256m-xx:maxpermsize=256m-xx:+heapdumponoutofmemoryerror-xx:reservedcodecachesize=128m-xx:initialcodecachesize=128m-xx:+disableexplicitgc-xx:+printgcdetails-xx:+printgcdatestamps-xx:+printgctimestamps-xx:+printgctimestamps

如何解决?

共有1个答案

范文昌
2023-03-14

为什么会有如此复杂的JVM参数(您缺少-xloggc:/path/to/file以避免冗长的日志记录)。

我真的很难相信没有gc被触发。如果我是你,你会从一个更容易理解的选项开始,然后从那里迭代。请记住,在大多数情况下,只要设置xmsxmx就足够了。因为heap是基于比率的,剩下的工作由人机工程学来完成。

 类似资料:
  • 问题内容: 我正在读取一个很大的文件,并从每一行中提取文本的一小部分。但是,在操作结束时,我的工作记忆很少。似乎垃圾收集器在读取文件后无法释放内存。 我的问题是:有什么办法释放这种记忆?还是这是JVM错误? 我创建了一个SSCCE来演示这一点。它读取一个1 mb(由于16位编码,在Java中为2 mb)的文件,并从每行中提取一个字符(约4000行,因此大约为8 kb)。测试结束时,仍将使用全部2

  • 整个教程中已经不时的出现一些内存管理和垃圾回收的相关知识。这里进行一个小小的总结。 Java是在JVM所虚拟出的内存环境中运行的。内存分为栈(stack)和堆(heap)两部分。我们将分别考察这两个区域。 栈 栈的基本概念参考纸上谈兵: 栈 (stack)。许多语言利用栈数据结构来记录函数调用的次序和相关变量(参考Linux从程序到进程)。 在Java中,JVM中的栈记录了线程的方法调用。每个线程

  • 问题内容: 我很好奇嵌套函数的node.js模式如何与v8的垃圾收集器一起工作。这是一个简单的例子 如果restofprogram是长时间运行的,那是否不意味着str将永远不会被垃圾回收?我的理解是,使用结点,您最终会获得很多嵌套函数。如果在外部声明了restofprogram,是否会收集垃圾,因此str不能在范围内?这是推荐做法吗? 编辑 我不想使问题复杂化。那只是粗心,所以我修改了它。 问题答

  • 1.1 程序计数器 JVM 支持多线程同时执行,每个线程都有自己的程序计数器,线程正在执行 Java 代码,则存放正在执行的指令地址,如果正在执行 C 代码(本地方法),则为空。 1.2 虚拟机栈 线程私有,每个方法创建一个栈帧,用于存储局部变量表(this、参数列表、局部变量)、操作数栈(将下一个指令入栈,执行时出栈)、动态链接、方法出口等信息。方法从调用到执行完成对应栈帧的入栈到出栈,线程内串

  • 问题内容: 据我所知,从JDK 8开始,PermGen将成为Java历史的过去。一切都很好,很快乐……但是新的内存布局会是什么样?这会影响新平台上的GC吗? 问题答案: 在Oracle / Sun JDK8中,PermGen被Metaspace取代,这非常相似。主要区别在于Metaspace可以在运行时扩展。

  • 问题内容: 谁能 建议一本书 (或任何其他来源)来彻底揭示 JVM内存管理和垃圾回收的内部知识 (优化,工作,循环引用,特殊性,各种JVM隐喻的讨论…)? [到目前为止,我发现的是单独的文章,涉及各个方面,但没有重量级的书:)。这里是一些用于实施Hotspot的好材料。] 非常感谢您提供的任何建议。 问题答案: 如果您寻找与 供应商无关的 资源来揭示和彻底描述所有已研究/设计的各种GC算法,我建议