整个Xss(堆栈空间)是否用于每个Java线程?
根据这个页面,是的:
- 通过在Java命令行中包含-Xssnnm来增加应用程序中所有线程的堆栈大小(其中nn是每个线程的堆栈空间的兆字节数);
但是,您可以使用Thread(ThreadGroup group, Runnable target, String name, long stackSize)
构造函数为特定线程选择更大的堆栈大小.
分配一个新的Thread对象,使其具有target作为其运行对象,具有指定的名称作为其名称,属于group引用的线程组,并具有指定的堆栈大小.
但请注意(根据文档)stackSize
参数的效果(如果有)与平台高度相关,并且stackSize
参数的值可能在某些平台上无任何影响.
我认为更好的解决方案是重写正则表达式以避免出现问题。或者更好的是,用一些简单的 Java 解析代码替换它。或者可能只是拒绝大于特定长度的字符串。
增加堆栈大小只会推迟问题的发生。现在您可以处理 2000 或 4000 个字符的输入字符串,而不是 1000 个。但是迟早您可能会遇到导致扩展堆栈溢出的情况。