最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中內(nèi)存異常StackOverflowError與OutOfMemoryError詳解

 更新時(shí)間:2017年03月18日 11:50:35   作者:wangshuang1631  
這篇文章主要介紹了 Java中內(nèi)存異常StackOverflowError與OutOfMemoryError詳解的相關(guān)資料,需要的朋友可以參考下

 Java中內(nèi)存異常StackOverflowError與OutOfMemoryError詳解

使用Java開發(fā),經(jīng)常回遇到內(nèi)存異常的情況,而StackOverflowError和OutOfMemoryError便是最常遇見的錯(cuò)誤。
首先,看看這兩種錯(cuò)誤的解釋:

如果當(dāng)前線程請(qǐng)求的棧深度大于虛擬機(jī)所允許的最大深度,將拋出StackOverflowError異常。 如果虛擬機(jī)在擴(kuò)展棧時(shí)無法申請(qǐng)到足夠的內(nèi)存空間,則拋出OutOfMemoryError異常。

這里把異常分為兩種情況,但是存在一些相互重疊的地方:當(dāng)??臻g無法繼續(xù)分配時(shí),到底是內(nèi)存太小,還是已經(jīng)使用的棧空間太大,本質(zhì)上是對(duì)同一個(gè)問題的兩種描述而已。

接下來,兩個(gè)小例子分別展示如何產(chǎn)生這兩種異常:

OutOfMemoryError異常:

首先設(shè)置一下虛擬機(jī)啟動(dòng)參數(shù),如下:

代碼如下:

import java.util.ArrayList;
import java.util.List;

public class TEST1 {
  static class OOMObject{
  }
  public static void main(String[] args) {
    List<OOMObject> list = new ArrayList<OOMObject>();
    while(true){
      list.add(new OOMObject());
    }
  }
}

錯(cuò)誤信息入下:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
  at java.util.Arrays.copyOf(Unknown Source)
  at java.util.Arrays.copyOf(Unknown Source)
  at java.util.ArrayList.grow(Unknown Source)
  at java.util.ArrayList.ensureExplicitCapacity(Unknown Source)
  at java.util.ArrayList.ensureCapacityInternal(Unknown Source)
  at java.util.ArrayList.add(Unknown Source)
  at com.ws.TEST1.main(TEST1.java:13)

StackOverflowError異常:

public class TEST2 {
  private int stackLength = 1;
  public void stackLeak() {
    stackLength++;
    stackLeak();
  }
  public static void main(String[] args) {
    TEST2 oom = new TEST2();
    try {
      oom.stackLeak();
    } catch (Throwable e) {
      System.out.println("stack length:" + oom.stackLength);
      throw e;
    }
  }
}

錯(cuò)誤信息如下:

stack length:7585
Exception in thread "main" java.lang.StackOverflowError
  at com.ws.TEST2.stackLeak(TEST2.java:8)
  at com.ws.TEST2.stackLeak(TEST2.java:8)
  at com.ws.TEST2.stackLeak(TEST2.java:8)
  at com.ws.TEST2.stackLeak(TEST2.java:8)
  at com.ws.TEST2.stackLeak(TEST2.java:8)
  at com.ws.TEST2.stackLeak(TEST2.java:8)
  at com.ws.TEST2.stackLeak(TEST2.java:8)
  at com.ws.TEST2.stackLeak(TEST2.java:8)
  at com.ws.TEST2.stackLeak(TEST2.java:8)
  at com.ws.TEST2.stackLeak(TEST2.java:8)
......

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • springboot CompletableFuture異步線程池詳解

    springboot CompletableFuture異步線程池詳解

    這篇文章主要介紹了springboot CompletableFuture異步線程池的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Spring原生Rpc六種的正確打開方式實(shí)現(xiàn)示例

    Spring原生Rpc六種的正確打開方式實(shí)現(xiàn)示例

    這篇文章主要為大家展示了Spring原生Rpc六種的正確打開方式實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步早日升職加薪
    2022-02-02
  • 如何用Eureka + Feign搭建分布式微服務(wù)

    如何用Eureka + Feign搭建分布式微服務(wù)

    Eureka是Spring Cloud Netflix的一部分,是一個(gè)服務(wù)注冊(cè)中心。其服務(wù)生態(tài)中主要有三個(gè)角色:Eureka注冊(cè)中心、服務(wù)提供者、服務(wù)消費(fèi)者。服務(wù)提供者注冊(cè)到Eureka后,服務(wù)消費(fèi)者就能夠直接向Eureka查詢當(dāng)前有哪些服務(wù)可用,再從中選取一個(gè)消費(fèi).本文講解如何搭建分布式微服務(wù)
    2021-06-06
  • Spring Boot事務(wù)配置詳解

    Spring Boot事務(wù)配置詳解

    這篇文章主要介紹了Spring Boot事務(wù)配置詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • spring mvc常用注解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    spring mvc常用注解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了spring mvc常用注解,詳細(xì)的介紹了@RequestMapping, @RequestParam, @ModelAttribute等等這樣類似的注解,有興趣的可以了解一下
    2017-08-08
  • 詳解用Kotlin寫一個(gè)基于Spring Boot的RESTful服務(wù)

    詳解用Kotlin寫一個(gè)基于Spring Boot的RESTful服務(wù)

    這篇文章主要介紹了詳解用Kotlin寫一個(gè)基于Spring Boot的RESTful服務(wù) ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 最新評(píng)論

    安图县| 河津市| 灵武市| 巍山| 麟游县| 兴安盟| 大足县| 皋兰县| 松潘县| 黄陵县| 和田县| 浮山县| 岳池县| 宜黄县| 土默特左旗| 南雄市| 衢州市| 砀山县| 定兴县| 康保县| 中西区| 慈利县| 内乡县| 安丘市| 乌鲁木齐市| 彰化市| 沙坪坝区| 横峰县| 黑河市| 静宁县| 南川市| 台东市| 全南县| 九龙县| 昌吉市| 长寿区| 汉阴县| 博客| 平潭县| 蕲春县| 客服|