2

https://developer.android.com/guide/practices/verifying-apps-art.html#Stack_Size

该文档说 ART 有一个用于原生和 Java 的统一堆栈。你能告诉我这是什么意思吗?我知道线程的堆栈大小只能在创建时定义,例如在Java代码中使用Thread类的构造函数或在本机代码中使用pthread API。所以我无法理解统一堆栈如何影响应用程序的行为。请指导我参考一些好的教程或片段抛出 StackOverflowError 由统一堆栈导致。

4

1 回答 1

2

在 Dalvik 中,每个线程都有两个独立的堆栈,一个用于本地代码,一个用于 Java 代码。在 ART 中,每个线程都有一个用于本地代码和 Java 代码的堆栈。如果您在代码(本机或 Java)的某个地方创建了一个线程并指定了它的堆栈大小,那么您现在应该知道这个大小对于两个代码环境是共享的,并且您应该相应地调整它。

于 2014-07-22T11:23:02.993 回答