日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

栈溢出

發(fā)布時間:2024/4/13 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 栈溢出 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
這節(jié)課我們講一下棧溢出,棧溢出主要是在做遞歸調(diào)用的時候,循環(huán)定義的情況下,可能會發(fā)生一個棧溢出的一個問題,就是拋出棧異常,也就是一個最大的深度 package com.learn.test;/*** 棧溢出* 這個你默認的話不一樣的* 最大深度可能跟每個的配置是不一樣的* 這個你無法去說的* 我記得是1萬2千多* 具體數(shù)字我也忘記了* 我們看一下默認深度是多少* 這是默認的* * @author Leon.Sun**/ public class Test005 {private static int count;public static void count() {try {/*** 在count方法里面做了count++;*/count++;/*** 然后又調(diào)了count方法* 這個叫做什么方法* 這個叫做什么調(diào)用* 遞歸方法一直在循環(huán)調(diào)用* */ // count();} catch (Throwable e) {/*** 在這里我們也把日志給打印出來了* 他最多最大的深度是為多少* 最大深度:10692* java.lang.StackOverflowError* 報了這個異常為什么* 10692的最大深度* 如果你想再調(diào)用更深的可以有一個配置的* 你們可以去加大深度調(diào)用* 我們需要配置這樣一段話就行了* 默認深度你不能說具體的* 每個電腦的運行效果不一樣的* 所以這個不好說* 只能說大概是多少* 默認深度是10692* 我們可以加大他的深度調(diào)用* 我們同樣進行配置* Run as -> Run Application -> VM arguments* -Xss5m* 最大深度:252212* 只要我配置5M,* 這個深度是他的多少倍* 基本上是20多倍* 默認1M能調(diào)多少深度* -Xss1m* 最大深度:10694* 1M的情況下是10694* 大概我們的默認深度是1M* 在這里給你說一個誤區(qū)* */System.out.println("最大深度:" + count);e.printStackTrace();}}public static void main(String[] args) {/*** 這里有一個count方法*/ // count();/*** 我在這里寫一個for循環(huán)* 我這么調(diào)用會不會產(chǎn)生棧溢出的問題* 這叫不叫遞歸調(diào)用* 會不會產(chǎn)生棧溢出的問題* 這個不是遞歸* 遞歸里面才會產(chǎn)生的* 這個肯定不會的* 沒有報任何錯吧* 然后我把它加大一倍* 是不是也沒有報錯* 是肯定不會的* 棧采用遞歸調(diào)用的情況下* 棧溢出是產(chǎn)生于遞歸調(diào)用* 循環(huán)遍歷是不會的*/for (int i = 0; i < 20805; i++) {count();}} } 虛擬機棧溢出 錯誤原因: java.lang.StackOverflowError 棧內(nèi)存溢出 棧溢出 產(chǎn)生于遞歸調(diào)用,循環(huán)遍歷是不會的,但是循環(huán)方法里面產(chǎn)生遞歸調(diào)用, 也會發(fā)生棧溢出。 解決辦法:設置線程最大調(diào)用深度 -Xss5m 設置最大調(diào)用深度

?

總結

以上是生活随笔為你收集整理的栈溢出的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。