package com.sino.jvmdemo;
/**
* function:创建线程导致内存溢出异常 虚拟机栈和本地方法异常
* VM Args:-Xss2M
* @author ylchou@qq.com
*
*/
public class JavaVMStackOOM {
private void dontStop(){
while(true){
}
}
public void stackLeakByThread(){
while(true){
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
dontStop();
}
});
thread.start();
}
}
public static void main(String[] args) {
JavaVMStackOOM oom = new JavaVMStackOOM();
oom.stackLeakByThread();
}
}
PS:运行上面这段代码,要先保存当前的工作,由于在windows平台的虚拟机中,Java的线程是映射到OS的内核线程上的,所以上述代码执行时有较大的风险,可能导致OS假死。我运行时OS就死啦。