Унифицированный стек для нативного и Java в Android Runtime (ART)
https://developer.android.com/guide/practices/verifying-apps-art.html
В этом документе говорится, что у ART есть унифицированный стек для родного и Java. Не могли бы вы сказать мне, что это значит? Я понимаю, что размер стека потока может быть определен только при его создании, например, с использованием конструктора класса Thread в коде Java или API-интерфейса pthread в собственном коде. Поэтому я не могу понять, как унифицированный стек влияет на поведение приложений. Пожалуйста, направьте меня к некоторым хорошим учебникам или броскам фрагментов. StackruError возник из объединенного стека.
1 ответ
В Dalvik каждый поток имеет два отдельных стека, один для собственного кода и для кода Java. В ART каждый поток имеет один стек как для собственного кода, так и для кода Java. Если где-то в вашем коде (нативном или Java) вы создали поток и указали его размер стека, вы должны знать, что этот размер является общим для обеих сред кода, и вы должны соответствующим образом изменить его.