相关疑难解决方法(0)

如何增加Java堆栈大小?

我问这个问题是为了了解如何在JVM中增加运行时调用堆栈的大小.我已经得到了答案,我还得到了许多有用的答案和评论,这些答案和评论与Java如何处理需要大型运行时堆栈的情况有关.我已经用答案摘要扩展了我的问题.

最初我想增加JVM堆栈大小,所以程序就像没有运行的程序一样StackOverflowError.

public class TT {
  public static long fact(int n) {
    return n < 2 ? 1 : n * fact(n - 1);
  }
  public static void main(String[] args) {
    System.out.println(fact(1 << 15));
  }
}
Run Code Online (Sandbox Code Playgroud)

相应的配置设置是java -Xss...具有足够大值的命令行标志.对于TT上面的程序,它与OpenJDK的JVM一样:

$ javac TT.java
$ java -Xss4m TT
Run Code Online (Sandbox Code Playgroud)

其中一个答案还指出,这些-X...标志是依赖于实现的.我在用

java version "1.6.0_18"
OpenJDK Runtime Environment (IcedTea6 1.8.1) (6b18-1.8.1-0ubuntu1~8.04.3)
OpenJDK 64-Bit Server VM (build 16.0-b13, mixed mode)
Run Code Online (Sandbox Code Playgroud)

也可以仅为一个线程指定一个大堆栈(参见其中一个答案如何).建议使用此方法java -Xss...以避免为不需要它的线程浪费内存.

我很好奇上面的程序需要多大的堆栈,所以我运行它n增加了:

  • -Xss4m就足够了 fact(1 …

java stack-overflow stack

114
推荐指数
4
解决办法
17万
查看次数

用于从RTF字符串中提取文本的正则表达式

我正在寻找一种从RTF字符串中删除文本的方法,我找到了以下正则表达式:

({\\)(.+?)(})|(\\)(.+?)(\b)
Run Code Online (Sandbox Code Playgroud)

但是,结果字符串有两个直角括号"}"

之前: {\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 MS Shell Dlg 2;}{\f1\fnil MS Shell Dlg 2;}} {\colortbl ;\red0\green0\blue0;} {\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\tx720\cf1\f0\fs20 can u send me info for the call pls\f1\par }

后: } can u send me info for the call pls }

有关如何改进正则表达式的任何想法?

编辑: 一个更复杂的字符串,如这个不起作用: {\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 MS Shell Dlg 2;}} {\colortbl ;\red0\green0\blue0;} {\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\tx720\cf1\f0\fs20 HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\test\\myapp\\Apps\\\{3423234-283B-43d2-BCE6-A324B84CC70E\}\par }

regex rtf

38
推荐指数
5
解决办法
5万
查看次数

标签 统计

java ×1

regex ×1

rtf ×1

stack ×1

stack-overflow ×1