【问题标题】:java.lang.InternalError Android [closed]java.lang.InternalError Android [关闭]
【发布时间】:2017-08-03 23:21:10
【问题描述】:

我收到此错误,我该如何解决?

  java.lang.InternalError: 
  at java.lang.Thread.nativeCreate (Native Method)
  at java.lang.Thread.start (Thread.java:1063)
  at java.util.concurrent.ThreadPoolExecutor.addWorker (ThreadPoolExecutor.java:920)
  at java.util.concurrent.ThreadPoolExecutor.processWorkerExit (ThreadPoolExecutor.java:988)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1130)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
  at java.lang.Thread.run (Thread.java:818)

一位用户正在向我发送一些关于此的信息:

java.lang.StringIndexOutOfBoundsException: length=0; regionStart=0; regionLength=1
at java.lang.String.startEndAndLength(String.java:298)
at java.lang.String.substring(String.java:1087)

【问题讨论】:

  • 第 1 步。发布足够的代码让我们重现问题。
  • 这不可能,我从 Play 管理中心错误中得到了这个错误。这是一个有数千行的应用程序@RoddyoftheFrozenPeas
  • 看起来您的线程池无法创建新线程。您的最大线程池大小是多少?您尝试创建多少个线程/池?
  • @MattClark 如何检查最大线程池大小?
  • 多次启动和停止应用?在做一堆工作的时候把它刷掉?如果您没有更多详细信息,将很难重现...

标签: java android threadpoolexecutor


【解决方案1】:

StringIndexOutOfBoundsException 异常只是说有人试图在空字符串上调用substring(0, 1)。如果您进一步查看堆栈跟踪,这是否来自您的代码?如果是这样,那么在调用substring 之前只需检查以确保字符串不为空。

至于Thread.nativeCreate,您是否有迹象表明它与另一个StringIndexOutOfBoundsException 异常有关?我假设不会,因为您没有提供有关他们关系的任何信息。 ThreadPoolExecutor.addWorker 失败的最可能原因是资源耗尽,要么是内存不足,要么是设备上允许的线程不足。检查您如何获取和配置您正在使用的ThreadPoolExecutor,检查您是否可能超出其MaximumPoolSizeLargestPoolSize 参数。

【讨论】:

  • 好吧,我实现了 crashlytics(感谢@benp。因为我可以看到他的线程)。在未来的版本中,我会得到更准确的报告,我会再次来到这里......因为我目前只有来自 Play 管理中心的这些信息(真的几乎没有)
猜你喜欢
  • 2016-04-15
  • 1970-01-01
  • 2017-02-06
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多