小编Nar*_*mar的帖子

为什么使用 ulimit -v 将我的虚拟内存限制为 512MB 会使 JVM 崩溃?

我正在尝试强制执行程序在 Unix 系统上可以消耗的最大内存。我认为 ulimit -v 应该可以解决问题。这是我为测试编写的示例 Java 程序:

import java.util.*;
import java.io.*;

public class EatMem {

  public static void main(String[] args) throws IOException, InterruptedException {
    System.out.println("Starting up...");
    System.out.println("Allocating 128 MB of Memory");
    List<byte[]> list = new LinkedList<byte[]>();
    list.add(new byte[134217728]); //128 MB
    System.out.println("Done....");
  }
}
Run Code Online (Sandbox Code Playgroud)

默认情况下,我的 ulimit 设置是(ulimit -a 的输出):

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31398
max locked memory       (kbytes, -l) 64 …
Run Code Online (Sandbox Code Playgroud)

java memory-management ubuntu ulimit

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×1

memory-management ×1

ubuntu ×1

ulimit ×1