-Xss / -XX:ThreadStackSize |
---|
指定线程最大栈空间 |
jdk1.4里默认的栈大小是256KB |
jdk1.5里默认的栈大小为1M |
配置JVM启动参数:-Xmx20m -Xms20m -Xss1m -XX:+PrintCommandLineFlags |
-XX:ConcGCThreads=3 -XX:G1ConcRefinementThreads=13 -XX:GCDrainStackTargetSize=64 -XX:InitialHeapSize=20971520 -XX:MarkStackSize=4194304 -XX:MaxHeapSize=20971520 -XX:MinHeapSize=20971520 -XX:+PrintCommandLineFlags -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:ThreadStackSize=1024 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseG1GC -XX:-UseLargePagesIndividualAllocation |
配置JVM启动参数: -Xmx20m -Xms20m -XX:ThreadStackSize=512K -XX:+PrintCommandLineFlags |
-XX:ConcGCThreads=3 -XX:G1ConcRefinementThreads=13 -XX:GCDrainStackTargetSize=64 -XX:InitialHeapSize=20971520 -XX:MarkStackSize=4194304 -XX:MaxHeapSize=20971520 -XX:MinHeapSize=20971520 -XX:+PrintCommandLineFlags -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:ThreadStackSize=524288 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseG1GC -XX:-UseLargePagesIndividualAllocation |
这个参数直接会影响创建线程数量,值越小创建线程数越多; (估算jvm进程的最大线程数) |
这个参数直接决定了函数可调用的最大深度,值越大调用最大深度越大;(参照如下代码) |
public class Jvm4_Xss {
private static int count;
private static void recursion() {
count++;
recursion();
}
public static void main(String[] args) {
try {
recursion();
} catch (Throwable e) {
System.out.println("调用最大深度:" + count);
e.printStackTrace();
}
}
}
------------------------------------------------------------------
//JVM 启动参数
-Xmx20m -Xms20m -Xss1m
//运行结果:
调用最大深度:43909
java.lang.StackOverflowError
at jvm.Jvm4_Xss.recursion(Jvm4_Xss.java:8)
at jvm.Jvm4_Xss.recursion(Jvm4_Xss.java:8)
------------------------------------------------------------------
//JVM 启动参数
-Xmx20m -Xms20m -Xss2m
//运行结果:
调用最大深度:103720
java.lang.StackOverflowError
at jvm.Jvm4_Xss.recursion(Jvm4_Xss.java:8)
at jvm.Jvm4_Xss.recursion(Jvm4_Xss.java:8)
拓展 :JVM常用参数