我正在开发一个项目,需要在HashMap / Hashtable / ArrayList中加载数千个对象的数据。小应用程序没有问题,但在大型应用程序中 内存不足 。
请建议如何处理这种情况?
答案 0 :(得分:3)
为什么它需要在内存中?我会说使用随机访问文件。
答案 1 :(得分:1)
我想知道您的要求,为什么同时加载数千个对象很重要?你能提供更多关于它的细节吗?也许您的实现可以重做,这样您就不需要在内存中加载那么多对象了。
答案 2 :(得分:1)
不要立即将所有数据读入内存,或者在执行前扩展可用内存。
您无法以编程方式增加堆大小。
答案 3 :(得分:1)
要么必须增加内存,要么必须检查代码是否存在应用程序创建许多对象(可能在循环中)的某个点。如果有,则取消该对象(确保它不会影响您的应用程序流程)。另一种选择是尝试使用较轻的对象(例如,如果可以正确覆盖toString()方法,则可以使字符串对象更轻。这也可以提高应用程序的性能)
答案 4 :(得分:0)
您可以使用缓存系统,例如ehcache。这样可以控制所使用的“记忆”。还有其他缓存实现,ehcache可能不适合您的需求。