入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

JVM Exception in thread "main" java.lang.StackOverflowError

创建时间:2017-10-27 投稿人: 浏览次数:342


当你的程序报上面错误时,一般说明单个线程的栈大小不够了,不论是main线程还是其他子线程。可以调

高线程栈大小来解决该问题。不过在调高之前应先检查你的程序是不是有无限递归方法之类的情况。


在运行程序的参数里面加上:-Xss8m。代表将线程栈设置为8M,默认是1M。下面是我测试的不同栈大小

对应的大概递归次数。


public class TestJVMArgs {

	static long methodNum = 0;
	public static void testStackSize() throws InterruptedException {
		methodNum++;
		System.out.println(methodNum);
		if (methodNum % 10 == 0) {
			Thread.sleep(5);
		}
		testStackSize();
	}

	public static void main(String[] args) throws InterruptedException {
		testStackSize();    // java.lang.StackOverflowError 与-Xss有关,ss越大,栈帧越多
	}
}

线程栈大小 递归方法次数
-Xss128k 611
-Xss512k 2857
-Xss1024k 6020
-Xss2048k 15414
-Xss4096k 35414
-Xss8192k 69213

阅读更多
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像