zoukankan      html  css  js  c++  java
  • JVM StackOverflowError vs. OutOfMemoryError

    if the computation in a thread needs a larger Java Virtual Machine stack than is permitted, the Java Virtual Machine throws a StackOverflowError;

    if Java Virtual Machine stacks can be dynamically expanded, and expansion is attempted but insufficient memory can be made available to effect the expansion, or if insufficient memory can be made available to create the initial Java Virtual Memory stack for a new thread, the Java Virtual Machine throws an OutOfMemoryError.

    Example of StackOverflowError: limit the size of a thread's stack size and the do a deep recursion

     1 public class Main {
     2 
     3     public static void main(String[] args) {
     4         new Thread(null, new Runnable() {
     5             public void run() {
     6                 {
     7                     System.out.println(fact(1<<15));
     8                 }
     9             }
    10             private long fact(int n) {
    11                 return n < 2 ? 1 : n * fact(n-1);
    12             }
    13         }, "thread", 1<<20).start();
    14     }
    15 }

    Example of OutOfMemoryError: limit -Xmx and create large objects (like using StringBuilder)

     1 public class Main2 {
     2 
     3     public static void main(String[] args) {
     4         new Thread(null, () -> {
     5             {
     6                 StringBuilder builder = new StringBuilder();
     7                 for (int cnt = 0; cnt < 100000000; cnt++) {
     8                     builder.append(cnt);
     9                 }
    10 
    11                 try {
    12                     Thread.sleep(15000000);
    13                 } catch (InterruptedException e) {
    14                     e.printStackTrace();
    15                 }
    16             }
    17         }, "thread", 1 << 20).start();
    18     }
    19 }
  • 相关阅读:
    ABAP 表格控制(Table Control)和步循环
    ABAP中正则表达式的简单使用方法 (转老白BLOG)
    ABAP常用函数集锦
    ALV用例大全
    DXP 笔记
    STM32笔记——Power Controller(PWR)
    STM32之glossary
    STM32 解析futaba S-bus协议
    Windows下 vundle的安装和使用
    使用串口绘制实时曲线 —— SerialChart
  • 原文地址:https://www.cnblogs.com/qsort/p/5811938.html
Copyright © 2011-2022 走看看