【发布时间】:2014-09-13 03:59:29
【问题描述】:
https://developer.android.com/guide/practices/verifying-apps-art.html#Stack_Size
该文档说 ART 有一个用于原生和 Java 的统一堆栈。 你能告诉我这是什么意思吗? 我知道线程的堆栈大小只能在创建时定义,例如在 Java 代码中使用 Thread 类的构造函数或在本机代码中使用 pthread API。 所以我无法理解统一堆栈如何影响应用程序的行为。 请指导我一些好的教程或 sn-p 抛出 StackOverflowError 由统一堆栈导致。
【问题讨论】:
-
我不确定您所说的“示例”是什么意思。您是否曾经为您在应用程序中创建的线程明确设置堆栈大小(如果您不知道,答案可能是“否”)?如果没有,您似乎没有什么可担心的。或者,您在使用 ART 的设备上运行应用时遇到过与堆栈相关的错误?
-
我的意思是这个例子是代码 sn-p throws StackOverflowError 导致统一堆栈。我已经在 Java 中明确指定了堆栈大小,但我在 ART 上没有任何问题。感谢您的评论。
-
您是说您的代码会导致您尝试调试的错误吗?如果是这样,请将其发布在问题中,而不是作为链接。或者您只是想知道什么样的代码可以做到这一点?
-
感谢您的评论。我有代码,但无法做出仅在 ART 上而不是在 Dalvik 上重现引发 StackOverflowError 的条件。在上述网站中,谷歌提到如下; “在 Java 中,查看对指定显式堆栈大小的 Thread 构造函数的调用。例如,如果发生 StackOverflowError,您将需要增加大小。”
标签: android dalvik stack-size android-runtime