1

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

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

4

5 回答 5

3

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

于 2012-11-06T13:38:00.540 回答
1

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

于 2012-11-06T13:38:40.333 回答
1

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

您不能以编程方式增加堆大小。

于 2012-11-06T13:40:24.517 回答
1

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

于 2012-11-06T13:52:27.980 回答
0

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

于 2012-11-06T14:19:03.460 回答