Ras*_*ber 2 java garbage-collection jvm
刚刚遇到如下代码(稍微简化):
/* periodically requests garbagecollect to improve memory usage and
garbage collect performance under most JVMs */
static class GCThread implements Runnable {
public void run() {
while(true) {
try {
Thread.sleep(300000);
} catch (InterruptedException e) {}
System.gc();
}
}
}
Thread gcThread = new Thread(new GCThread());
gcThread.setDaemon(true);
gcThread.start();
Run Code Online (Sandbox Code Playgroud)
我尊重代码的作者,但不再可以轻松地要求他在顶部的评论中为自己的断言辩护。
这是真的?与我的直觉相悖的是,这个小小的 hack 应该可以改进任何东西。我希望 JVM 能够更好地决定何时执行集合。
代码在一个 Web 应用程序中运行,该应用程序在 Z/OS 上的 IBM WebSphere 中运行。
这取决于。
JVM 可以完全忽略,System.gc()所以这段代码什么都不做。
其次,GC 具有成本影响。如果您的程序不会以其他方式执行 GC(例如,它不会产生太多垃圾,或者它有一个巨大的堆并且永远不需要 GC),那么此代码将增加开销。
如果程序通常只使用次要 GC 运行,而此代码导致了一次主要 GC,则会产生负面影响。
总而言之,这种优化绝对没有任何意义,除非您有具体的证据表明它提供了好处,并且每次程序发生重大变化时都需要重新评估该证据。
| 归档时间: |
|
| 查看次数: |
1396 次 |
| 最近记录: |