批量从数据库导出数据导致 Java Out of Memory 异常 ?

2019-09-04 10:12:32 +08:00
 cccy0

这样为什么会导致 OOM, 难道是没有及时 GC 导致的吗

1499 次点击
所在节点    问与答
8 条回复
ffeii
2019-09-04 10:31:36 +08:00
这是一次读 5000 条数据到内存了
cccy0
2019-09-04 10:38:00 +08:00
@ffeii #1 一次 1 万条都没问题, 但是内存占用好像是一直增加的, 大概到 5 万条左右就 OOM 了
patx
2019-09-04 10:47:00 +08:00
用游标的方式读
nekoneko
2019-09-04 11:05:15 +08:00
堆内存调大点 Xms 初始内存 Xmx 最大内存
nekoneko
2019-09-04 11:05:53 +08:00
然后可以在 page+1 后调用 fullgc 虽然可能不会起作用
nekoneko
2019-09-04 11:12:18 +08:00
然后写文件别用 printwriter
cccy0
2019-09-04 13:44:30 +08:00
@nekoneko #6 xms xmx 调大点是可以, 但是我把它放在新线程中运行就不 OOM 了 不知道是为啥原因
Raymon111111
2019-09-04 19:42:12 +08:00
如果想细查的话可以分析下 dump 文件

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/597755

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX