应用程序(Spring、JPA Hibernate、Sybase 12、Webapp)在启动时在本地运行时会消耗基于 VisualVM 的 256MB 堆空间中的 40MB。当我触发返回 70,000+ 行(文本数据无 blob)的搜索时,堆空间图会飙升至 256MB 并耗尽内存。我已经通过使用 setMaxResults(limit) 解决了这个问题。但是,当我查询相同的数据,复制粘贴到文本文件并保存到文件系统时,我可以看到大小只有 26MB 的文本。
所以实际上,从数据库加载 26MB 的文本量消耗了 216MB(从 256-40),在内存不足发生时谁在消耗 190MB?也许它会是框架,但我看不出它如何消耗比正在加载的实际数据更多......
* *再次注意,我用 setMaxResults(limit) 解决了这个问题,我的问题不是做什么,而是为什么,出于教育目的。