java将堆栈大小设置为线程在安卓中似乎没有什么区别
我使用下面的线程api来设置堆栈大小,比如我分配1或64或一些较小的值,以便模拟stackoverflow异常,但该值集似乎没有任何区别
Thread(ThreadGroup group, Runnable target, String name, long stackSize)
你可以在下面搜索框中键入要查询的问题!
我使用下面的线程api来设置堆栈大小,比如我分配1或64或一些较小的值,以便模拟stackoverflow异常,但该值集似乎没有任何区别
Thread(ThreadGroup group, Runnable target, String name, long stackSize)
# 1 楼答案
javadoc文档说,你不能期望任何特定的行为,所以你必须进行实验
我从来没有用小数字进行过测试,但是用Android创建了一个线程
导致runnable在主线程中运行时会出现StackOverflowerError错误,因此我想您可以在Android中将线程的堆栈大小设置为64K
# 2 楼答案
主线程的堆栈大小非常小,无法更改。大小因Android版本而异;见What is the android UI thread stack size limit and how to overcome it?。正如Karl在回答中所说,您创建的新线程可以有更多的堆栈
# 3 楼答案
这在JavaDoc for Thread中有很好的文档记录。引述:
# 4 楼答案
Android是开源的,所以这样的问题可以很容易地回答,而不需要其他人的猜测。简单地说,堆栈大小被截断为介于最小值(1536字节)和最大值(257KB)之间,因此使用这些范围之外的值不会有任何区别。此外,关于主螺纹尺寸固定的建议也不完全正确;它由VM的-Xss命令行选项控制,我相信可以使用
adb shell setprop dalvik.vm.extra-opts
设置该选项