【发布时间】:2011-12-26 07:34:53
【问题描述】:
我们的产品目前在 32 位 1.6 JRE 上运行。我们使用的是 Berkeley DB,它在 4 GB 地址空间中消耗了大约 2.5 GB RAM。这给我们留下了大约 750 MB 的内存用于 JVM 地址空间。
我们目前遇到了当前设置的 OutOfMemory 问题。如果将我们的 JVM 堆大小增加到 1.5 GB,同时仍保留 Berkeley DB 的 2.5 GB 空间,那就太好了。有没有办法在 32 位 JVM 中访问超过 4 GB 的 RAM/堆?我正在考虑以下解决方案
1) 使用执行更好 GC 的 JVM——这会给我带来边际结果——我可以获得大约 50-100 MB 的工作内存
2) 诸如 memcached 或“进程外 ehcache”之类的东西——这可以让我得到硬件允许的 IPC/序列化开销。
还有其他解决方案可以增加应用程序的可寻址内存吗?
该解决方案应该适用于运行 sparc 的 solaris 10。
*更新:由于使用本机共享库,现在我们无法切换到 64 位 JVM,即使操作系统是 64 位 *
谢谢,
【问题讨论】:
-
操作系统是带有大量 GB RAM 的 64 位 solaris。只有 java 进程需要更多 RAM/堆。
-
anjanb,你能说出 BerkeleyDB 的确切版本吗?为 BerkeleyDB 保留了多少内存?
标签: java memory jvm heap-memory solaris