在HashMap / Hashtable / ArrayList中处理大量对象时内存不足

时间:2012-11-06 13:32:48

标签: java memory

我正在开发一个项目,需要在HashMap / Hashtable / ArrayList中加载数千个对象的数据。小应用程序没有问题,但在大型应用程序中 内存不足

请建议如何处理这种情况?

5 个答案:

答案 0 :(得分:3)

为什么它需要在内存中?我会说使用随机访问文件。

答案 1 :(得分:1)

我想知道您的要求,为什么同时加载数千个对象很重要?你能提供更多关于它的细节吗?也许您的实现可以重做,这样您就不需要在内存中加载那么多对象了。

答案 2 :(得分:1)

不要立即将所有数据读入内存,或者在执行前扩展可用内存。

您无法以编程方式增加堆大小。

答案 3 :(得分:1)

要么必须增加内存,要么必须检查代码是否存在应用程序创建许多对象(可能在循环中)的某个点。如果有,则取消该对象(确保它不会影响您的应用程序流程)。另一种选择是尝试使用较轻的对象(例如,如果可以正确覆盖toString()方法,则可以使字符串对象更轻。这也可以提高应用程序的性能)

答案 4 :(得分:0)

您可以使用缓存系统,例如ehcache。这样可以控制所使用的“记忆”。还有其他缓存实现,ehcache可能不适合您的需求。