我使用的是Spring,Hibernate,Java 1.6等。 我有一个复杂的逻辑,在一个方法中创建了多个Arralists和Maps。 数据从数据库加载到Lists中,然后进行操作以为jsp页面准备数据。 如果从该页面快速多次执行相同的操作,则会频繁地执行操作。当使用列表和映射处理大量数据时,应用程序将抛出Java Heap OutOfMemory。
如果我应用-Xms -Xmx,那么它会在某种程度上有所帮助,如果我的数据增长,这个选项会松散到内存问题。 我想知道,有没有办法在我们操作并将它们传递给Model for jsp页面后清除列表。
答案 0 :(得分:0)
尝试将SoftReferences用于内存中需要的一些大型资源。
组织缓存以从内存中释放不必要的内容。请参阅示例ehCache
答案 1 :(得分:0)
你无法从OOM中恢复,因为你永远不知道它会在何时何地击中你。
尝试使用google的guava中的惰性集合来操作数据,而无需创建额外的副本。使用游标和迭代器来避免存储在内存中的完整数据。
答案 2 :(得分:0)
尝试使用分布式内存缓存解决方案,例如 - ehcache,Memcached,oracle coherence。