|   |      1 
                                  2
                             这是正常的行为。Java垃圾收集器旨在最小化两个指标: 
 最小化总体内存利用率不是主要目标。 在您的示例中,您使用的G1GC具有(隐式或显式)最大暂停时间目标。JVM发现仍有约1GB的可用堆空间,并估计它还不需要触发GC来满足暂停时间保证。所以它不会。。。因为在没有GC的情况下运行GC 足够地 收集垃圾的效率很低。 
   坦率地说,我认为这根本不是问题。但如果
   
    平均的
   
   内存利用率对您来说确实是一个问题,请查看
    请注意,这将提高JVM的CPU利用率: TANSTAAFL . | 
|   |      2 
                                  0
                             感谢您的回复。我添加了G1PeriodicGC选项,它解决了我的问题。 “坦率地说,我认为这根本不是问题” 就我而言,这是一个问题。该服务在我的服务器上毫无目的地使用了2GB的RAM。此数据不会保留在缓存中以供将来重用,因此需要删除。我意识到这一点是因为我的服务器上的RAM使用率太高,导致其他服务出现内存不足错误。 我不是Java专家,但从技术上讲,使用垃圾回收器设置是一个好的解决方案吗? 此外,您提到它会影响CPU使用率。这是否意义重大,或者它是否具有与垃圾收集器自行运行相同的影响? | 
|   | CocoaMix86 · 变量超出作用域后未回收内存[重复] 9 月前 | 
|   | Elektito · 变量地址不在/proc/self/maps中的堆栈范围内 10 月前 | 
|   | SkyBlue · Java Spring服务的内存/垃圾收集器问题 1 年前 |