从Java OutOfMemory异常中恢复

时间:2013-02-13 06:19:27

标签: java heap out-of-memory

我使用的是Spring,Hibernate,Java 1.6等。 我有一个复杂的逻辑,在一个方法中创建了多个Arralists和Maps。 数据从数据库加载到Lists中,然后进行操作以为jsp页面准备数据。 如果从该页面快速多次执行相同的操作,则会频繁地执行操作。当使用列表和映射处理大量数据时,应用程序将抛出Java Heap OutOfMemory。

如果我应用-Xms -Xmx,那么它会在某种程度上有所帮助,如果我的数据增长,这个选项会松散到内存问题。 我想知道,有没有办法在我们操作并将它们传递给Model for jsp页面后清除列表。

3 个答案:

答案 0 :(得分:0)

尝试将SoftReferences用于内存中需要的一些大型资源。

组织缓存以从内存中释放不必要的内容。请参阅示例ehCache

答案 1 :(得分:0)

你无法从OOM中恢复,因为你永远不知道它会在何时何地击中你。

尝试使用google的guava中的惰性集合来操作数据,而无需创建额外的副本。使用游标和迭代器来避免存储在内存中的完整数据。

答案 2 :(得分:0)

尝试使用分布式内存缓存解决方案,例如 - ehcache,Memcached,oracle coherence。