当前位置: 首页 > 面试题库 >

如何模拟内存不足:请求的阵列大小超出VM限制

梅宏盛
2023-03-14
问题内容

我使用了sun网站的“内存不足”帮助。引用为

内存不足:请求的阵列大小超出了VM限制

这表明应用程序试图分配一个大于堆大小的数组。例如,如果应用程序尝试分配512MB的数组,但最大堆大小为256MB,则将引发此错误。在大多数情况下,问题可能是堆大小太小,或者是错误导致应用程序尝试创建其大小计算错误地巨大的数组。

我试图通过模拟

import java.util.ArrayList;
import java.util.List;

public class JavaTest {
    public static void main(String[] args){
        long[] ll = new long[64*1024*1024];
    }
}

在我的机器上

javac *.java;java -Xmx256m JavaTest

但是上面的线正在产生

线程“主”中的异常java.lang.OutOfMemoryError:Java堆空间
    在JavaTest.main(JavaTest.java:7)

我想念什么?

更新: 我的java版本是

$ java-版本
Java版本“ 1.6.0_15”
Java(TM)SE运行时环境(内部版本1.6.0_15-b03)
Java HotSpot(TM)服务器VM(内部版本14.1-b02,混合模式)

问题答案:

为了我

long[] l = new long[Integer.MAX_VALUE];

产量 Exception in thread "main" java.lang.OutOfMemoryError: Requested array size exceeds VM limit

PS: 如果您需要出于测试目的而产生异常,则也可以只是您throw new OutOfMemoryError("Requested array size exceeds VM limit")自己。



 类似资料:
  • 问题内容: 有没有一种简单的方法可以在模拟器内部模拟低内存?我有兴趣执行类似于此帖子的资源清理 问题答案: 从外壳调用命令。 这会将当前内存限制设置为10000 Kb,这样以后从此Shell调用的所有应用程序将无法访问更多内存。

  • 上面链接中的代码正在工作,但可以传输到一定数量的数据。当我试图传输一个大小约为334 MB的.mkv格式的电影时,它给出了“内存不足,java堆大小”的错误。我是一个乞丐,我不知道如何解决这个问题,我试图在客户端程序中增加缓冲区大小,但问题仍然存在。请帮帮我.

  • 请我想知道如何解决这个问题。当我试图构建签名apk时就会发生这种情况。

  • 我正在运行一个MapReduce Pipes程序,并将内存限制设置为如下所示: 在yarn-site.xml中: 在mapred-site.xml中: 我当前运行在伪分布式模式下的单个节点上。我在关闭容器之前收到以下错误: 问候,

  • 我有一个带有SpringWeb服务的SpringBoot2应用程序,我试图限制传入请求的最大大小。我尝试使用以下属性,但不起作用。 您知道使用SpringWeb服务在SpringBoot2应用程序中限制传入请求最大大小的任何有效解决方案吗?在Spring Web服务文档中,有信息表明Spring Web服务提供了基于Sun的JRE 1.6 HTTP服务器的传输。也许这是个问题?

  • 问题内容: 我正在尝试找到一种方法来限制Python VM可用的内存,就像Java VM中的选项“ -Xmx”一样。(这个想法是为了能够处理MemoryError异常) 我不确定该选项是否存在,但是可能存在使用操作系统命令“隔离”进程及其内存的解决方案。 谢谢。 问题答案: 在* nix上,您可以使用该命令,特别是-m(最大内存大小)和-v(虚拟内存)。