c c++ java堆栈空间内存

1.C中栈空间是十分有限的。

测试环境
VS2015
Window10
函数的递归调用要依赖栈空间,这也导致递归调用次数是有限次的。
在我的测试中,回调了4789次就栈溢出了。


c c++ java堆栈空间内存_第1张图片

c c++ java堆栈空间内存_第2张图片

2.当申请了栈的空间,回调2891次就栈溢出了。

栈的空间是被共用的。


c c++ java堆栈空间内存_第3张图片

JAVA回调次数依赖JVM分配的栈大小,JVM默认分配1M

c c++ java堆栈空间内存_第4张图片
java.lang.StackOverflowError

c c++ java堆栈空间内存_第5张图片
java.lang.StackOverflowError

Android栈大小

Dalvik 具有单独的原生代码堆栈和 Java 代码堆栈,并且默认的 Java 堆栈大小为 32KB,默认的原生堆栈大小为 1MB。ART 具有统一的堆栈以改善局部性。 通常情况下,ART Thread堆栈大小应该与 Dalvik 堆栈大小近乎相同。 但如果您显式设置了堆栈大小,则可能需要针对 ART 中运行的应用重新访问这些值。

参考资料:

在 Android Runtime (ART) 上验证应用行为

你可能感兴趣的:(c c++ java堆栈空间内存)