https://developer.android.com/guide/practices/verifying-apps-art.html#Stack_Size
本文档说ART具有针对本机和Java的统一堆栈。 你能告诉我这是什么意思吗? 我知道线程的堆栈大小只能在创建它时定义,例如在Java代码中使用Thread类的构造函数或在本机代码中使用pthread API。 所以我无法理解统一堆栈如何影响应用程序的行为。 请指导我一些好的教程或片段抛出StackOverflowError来自统一堆栈。
答案 0 :(得分:2)
在Dalvik中,每个线程都有两个独立的堆栈,一个用于本机代码和Java代码。在ART中,每个线程都有一个用于本机代码和Java代码的堆栈。如果代码中的某个地方(本机或Java)创建了一个线程并指定了它的堆栈大小,那么现在应该知道这个大小是为两个代码环境共享的,你应该相应地调整它。