OutOfMemoryError - 我可以将数据转储到文件而不是内存吗?

Mic*_*ael 2 java performance memory-management out-of-memory

我正在使用一个API,它提供了一种remoteConnection.getObjects()从远程服务器获取对象列表的方法.该列表有时很大并导致Java堆空间OutOfMemoryError.有没有办法将这些对象直接转储到文件而不是将它们加载到内存中?

Jus*_*tin 5

从你所描述的东西,很不幸,答案是,你不能- "内存不足"实际上并不意味着你已经用完物理内存,这意味着你的虚拟地址空间太满/零散分配任何更多.

简而言之 - 内存到磁盘的分页位对你没有帮助,因为物理内存不是瓶颈,限制因素只是解决内存的能力.(操作系统已经无缝地将内存分页到磁盘).

您的选择(我可以看到)是:

  • 请API开发人员更改其API,或者找到使用API​​的替代方法,以便以较小的块返回数据
  • 尝试通过以下任一方式增加可用的地址空间:
    • 尽可能减少现有的内存使用量
    • 增加地址空间(例如,目标x64)