奇怪的java.lang.OutOfMemoryError - 进程不会崩溃

use*_*468 2 java out-of-memory

我看到一个奇怪的java.lang.OutOfMemoryError错误(下面的部分堆栈跟踪).问题是java进程不会崩溃.我在日志中看到这个错误,但过程似乎停止但不退出.

谢谢.

Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:691)
at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:943)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1325)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:132)
at com.amazonaws.services.s3.transfer.internal.UploadMonitor.<init>(UploadMonitor.java:126)
at com.amazonaws.services.s3.transfer.TransferManager.upload(TransferManager.java:384)
at com.amazonaws.services.s3.transfer.TransferManager.upload(TransferManager.java:344)
at com.amazonaws.services.s3.transfer.TransferManager.upload(TransferManager.java:272)
Run Code Online (Sandbox Code Playgroud)

Aja*_*rge 5

java.lang.OutOfMemoryError: unable to create new native thread   
Run Code Online (Sandbox Code Playgroud)

这是因为您的应用程序不能再创建本机线程.

  1. 检查您的应用程序产生的线程数.这很可能是罪魁祸首.
    您可以使用Thread转储来分析它.

  2. 然后检查堆栈大小.Xss帕拉姆会给你这个.尝试调整它.

越来越Xmx不会帮助你.事实上,在32位JVM上,它会加剧这个问题.

您的进程没有停止的原因是因为Uncaught Exceptions只会终止自己的线程,而不是Jan在评论中提到的整个应用程序.