我们收集了随着时间推移增长得相当大的对象。我们实施了缓存策略来帮助缓解这一问题,但是,如果在启动时没有分配足够的内存,我们仍然会在运行时耗尽堆空间。动态分配缓存大小以缓解堆空间错误
是否有标准的机制来减少运行时缓存的大小以消除这些OutOFMemory错误?这样,如果我们的进程以比正常情况更小的内存片开始,我们可以希望避免服务器死机。
我意识到这是一个错误类型,因此不应该被捕获/处理,因为它通常表示更严重的问题。
是它具有一些如下的简单:
private static final long RECOMMENDED_MEMORY = 1073741824L; //Example 1 Gig
private static int recommendedCacheSize = 100; //Example of 100 items
long heapSize = Runtime.getRuntime().totalMemory();
double size = Math.floor((double) heapSize/RECOMMENDED_MEMORY * recommendedCacheSize);
recommendedCacheSize = ++size;
注意:这是在Tomcat中运行。 – Scott 2010-09-28 14:31:52
缓存是使用软参考还是弱参考构建的? – 2010-09-28 14:41:34