【问题标题】:How can I change the stack size (of a thread) in my Android Application?如何更改我的 Android 应用程序中的堆栈大小(线程的)?
【发布时间】:2017-03-18 05:19:39
【问题描述】:

我的服务中出现 stackoverflow 错误,该错误附加到我的主要活动中。有没有办法在我的服务中更改堆栈大小?但是,我遇到了 Xss 参数,显然它在 vm 选项中不可用(Help->Edit vmoptions)。

一点背景: 当我尝试在代码中读取序列化的机器学习模型然后对其进行反序列化时,我遇到了错误。当这个模型建立在一个小数据集上时,同样的功能可以正常工作,但当我用更大的数据集构建相同的模型时,它就不起作用了。

关于我该怎么做的任何想法?

【问题讨论】:

  • 我认为您需要在询问之前优化您的代码
  • @zombie 我正在反序列化“神经网络分类器”,它构建了一个大数据集,所以我认为它与我的代码优化无关。
  • 你试过 android:largeHeap="true"
  • @Zombie 表示堆大小。但是,我指的是堆栈大小,而不是堆大小。

标签: java android timertask stack-size


【解决方案1】:

您无法更改应用程序的堆栈大小,但是您可以创建一个新线程并使用此构造函数为新线程设置堆栈大小:

构造函数Thread (ThreadGroup group, Runnable target, String name, long stackSize)

无论如何,当你得到一个干净的堆栈时,一个新线程是个好主意。 Android主线程已经有大约10个条目属于Dalvik和系统的其他部分......

【讨论】:

  • 我不想更改整个应用程序的堆栈大小,而只想更改我正在使用的计时器线程。我是 TIMER TASK 和我的应用程序中定期任务的计时器。
  • 您无法更改Timer 使用的线程。因此,您需要第二个具有合适堆栈大小的线程,您可以从您的TimerTask 触发。
猜你喜欢
  • 2011-02-03
  • 1970-01-01
  • 2012-08-25
  • 2016-05-27
  • 2020-10-17
  • 1970-01-01
  • 2012-07-01
  • 2011-07-27
  • 2021-03-17
相关资源
最近更新 更多