【发布时间】:2019-04-14 11:34:17
【问题描述】:
我正在尝试复制java.lang.OutOfMemoryError: unable to create new native thread
但是使用 -Xss VM 参数。
我猜如果我们有大量线程,并且每个线程占用 X 堆栈空间,如果线程*X > 总堆栈大小,我将遇到异常。
但是什么也没发生。
我的测试员:
` 公共静态 void main(String[] args) 抛出异常 {
ThreadPoolExecutor executor = new ThreadPoolExecutor(1000, 15000, 0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
int i = 0;
try
{
Thread.sleep(100);
for (; i <= 10; i++)
{
Runnable t = new Runnable()
{
List<Object> objects = new LinkedList<>();
public void run()
{
while (true)
{
objects.add(new Object());
}
}
};
executor.submit(t);
}
}
catch (Throwable e)
{
System.err.println("stop with " + i + " threads, " + e);
System.err.println("task count " + executor.getTaskCount());
System.out.println("get active thread count " + executor.getActiveCount());
executor.shutdownNow();
}
}
`
我的虚拟机参数是
-Xms512m -Xmx512m -Xss1g
知道为什么我没有例外吗?我该如何拒绝?
谢谢
【问题讨论】:
标签: java exception jvm out-of-memory