java - 奇怪的java.lang.OutOfMemoryError——进程没有崩溃

标签 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)

最佳答案

java.lang.OutOfMemoryError: unable to create new native thread   

这是因为您的应用程序无法创建更多 native 线程。

  1. 检查您的应用生成的线程数。这很可能就是罪魁祸首。
    您可以使用线程转储来分析这一点。

  2. 然后检查您的堆栈大小。 Xss 参数会给你这个。尝试调整它。

增加 Xmx 在这里不会有帮助。事实上,在 32 位 JVM 上,它会加剧这个问题。

您的进程没有停止的原因是因为未捕获的异常仅终止其自己的线程,而不是 Jan 在评论中提到的整个应用程序。

关于java - 奇怪的java.lang.OutOfMemoryError——进程没有崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13892064/

相关文章:

java - 使用 getResourceAsStream 时发现错误 "Method May Fail to Close Stream"

java - 如何将 ActionScript 对象转换为字节数组?

java - Java 中的++i+++i+++i 与 C

java - 一个变量的多个字符串输入

java - Java 中的 AES 128 加密 PHP 中的解密

java - 如何通过 JMX 检测 OutOfMemoryError

java - HeapDumpOnOutOfMemoryError 仅在周期性任务上工作一次

java - 旧的 JaxB 和 JDK 8 元空间内存不足问题

Java tomcat线程内存使用限制

java - 运行Hadoop时如何避免OutOfMemoryException?