我使用 java melody 来监控生产环境中的内存使用情况。要求是内存不应该超过256MB/512MB
。
我已经做了最大的代码优化,但仍然是使用,448MB/512MB
但是当我在 java melody 中手动执行垃圾收集器时,内存消耗是109MB/512MB
。
我使用 java melody 来监控生产环境中的内存使用情况。要求是内存不应该超过256MB/512MB
。
我已经做了最大的代码优化,但仍然是使用,448MB/512MB
但是当我在 java melody 中手动执行垃圾收集器时,内存消耗是109MB/512MB
。
为什么你真的关心堆使用?只要设置 XMS(最大堆)就可以了。让 java 在合适的时候调用 GC。只要您有空闲堆,仅仅为了拥有大量空闲堆而进行 GC 和释放堆是没有意义的。
如果要限制进程分配的内存 XMX 是不够的。您还应该限制本机内存。
你应该关心的是
见https://blog.gceasy.io/2017/05/30/improving-your-performance-reports/ https://blog.gceasy.io/2017/05/31/gc-log-analysis-use-cases /了解更多技术细节。您还可以使用https://blog.gceasy.io/分析您的 GC 日志,这将帮助您了解 JVM 是如何使用内存的。
您可以在代码中使用这两个调用之一来调用垃圾收集(它们是等效的):
System.gc();
Runtime.getRuntime().gc();
最好将调用放在定期调用的 Runnable 中,具体取决于达到内存限制的速度。