收到 OutOfMemoryError 异常

OutOfMemoryError 异常是由于Java堆或本机堆空间不足引起的。

如果Java堆已耗尽,则会收到一条错误消息,指示Java堆出现 OutOfMemoryError 状况。 进程地址空间(即本机堆)耗尽时,您会收到一条错误消息,指出本机分配失败。 无论在哪一种情况下,问题本身都可能并非内存泄漏,而只是所需的内存使用稳定状态高于可用状态。 因此,第一步是确定哪个堆即将耗尽,并增加该堆的大小。

如果由于发生实际内存泄漏而出现问题,那么增加堆大小无法解决该问题,但会推迟 OutOfMemoryError 异常或错误情况的发生。 这种推迟作用在生产系统上可能非常有帮助。

可分配对象的最大大小仅受限于可用内存量。 支持的最大数组元素数为 2 ^ 31-1 ,这是 Java 虚拟机规范允许的最大数目。 实际上,由于可用内存量的原因,可能无法分配大型数组。 使用 -Xmx 命令行选项可以配置可供对象使用的内存总量。 这些限制适用于 32 位和 64 位 JVM。