抓住尾部的StackOverFlowError

使用Java程序時可能要處理的一種更煩人的情況是StackOverFlowError,如果您有一個很好的可生產的測試用例,那么關于使用堆棧大小或設置條件斷點/某種痕跡 。

但是,如果您有一個測試案例可能一次失敗100次,或者像我的案例一樣在AWTMulticaster中出現競爭情況,那么您想改善診斷。 問題是默認情況下,在前1024個條目之后,VM不會在堆棧跟蹤中包含任何元素。 (至少對于JDK 6而言)因此,如果運行以下簡單示例:

package other;public class Overflow {public static final void call(double a, double b, double c, double d) {call(a,b,c,d);}public static void main(String[] args) {call(0,0,0,0);}}

在找到問題原因之前,輸出將停止,這使得解決問題非常困難。

> java other.Overflow 
Exception in thread "main" java.lang.StackOverflowErrorat other.Overflow.call(Overflow.java:7)at other.Overflow.call(Overflow.java:7)at other.Overflow.call(Overflow.java:7)at other.Overflow.call(Overflow.java:7)at other.Overflow.call(Overflow.java:7)at other.Overflow.call(Overflow.java:7)at other.Overflow.call(Overflow.java:7)at other.Overflow.call(Overflow.java:7)[ lots of lines removed ]at other.Overflow.call(Overflow.java:7)at other.Overflow.call(Overflow.java:7)at other.Overflow.call(Overflow.java:7)at other.Overflow.call(Overflow.java:7)at other.Overflow.call(Overflow.java:7)at other.Overflow.call(Overflow.java:7)
Process exited with exit code 1.

好消息是,此限制是啟動虛擬機時可以調整的許多正式和非正式的內容之一。

> java -XX:MaxJavaStackTraceDepth=1000000 other.Overflow 
Exception in thread "main" java.lang.StackOverflowErrorat other.Overflow.call(Overflow.java:7)at other.Overflow.call(Overflow.java:7)at other.Overflow.call(Overflow.java:7)at other.Overflow.call(Overflow.java:7)at other.Overflow.call(Overflow.java:7)at other.Overflow.call(Overflow.java:7)at other.Overflow.call(Overflow.java:7)at other.Overflow.call(Overflow.java:7)[ lots of lines removed ]at other.Overflow.call(Overflow.java:7)at other.Overflow.call(Overflow.java:7)at other.Overflow.call(Overflow.java:7)at other.Overflow.call(Overflow.java:7)at other.Overflow.call(Overflow.java:7)at other.Overflow.main(Overflow.java:12)
Process exited with exit code 1.

請注意,堆棧的末尾現在包含了問題的根源,在嘗試診斷問題時將非常有用。

您可能不想長期在生產服務器上設置此屬性,因為我不確定它的影響。 查看C ++代碼,似乎這只是一個最大值,不會影響大多數其他堆棧跟蹤,因為它們在32個條目的段中的鏈接列表中分配。

參考:在Gerard Davison的博客博客中,從我們的JCG合作伙伴 Gerard Davison 的尾部捕獲了StackOverFlowError 。


翻譯自: https://www.javacodegeeks.com/2012/07/catch-stackoverflowerror-by-its-tail.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371951.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371951.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371951.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Gunicorn配置部分的翻譯

寫在前面,雖然翻譯得很爛,但也是我的勞動成果,轉載請注明出處,謝謝。 Gunicorn版本號19.7.1 Gunicorn配置 概述 三種配置方式 優先級如下,越后的優先級越大 1.框架的設置(現在只有paster在用這個&#xff0…

臺式計算機風扇聲音大怎么處理,如何解決電腦電源風扇聲音大的問題?

現在的臺式機一般用3到5年后,一些問題自然也就慢慢表現出來了。很多網友在使用電腦過程中都有電腦風扇聲音大怎么辦的問題,電腦風扇聲音大就會讓人覺得使用電腦很不舒服,怎么辦好呢?出現重要的問題要如何解決好呢?現在…

jsp分頁功能

http://blog.csdn.net/xiazdong/article/details/6857515轉載于:https://www.cnblogs.com/Baronboy/p/6112403.html

Spring Security第1部分–具有數據庫的簡單登錄應用程序

什么是Spring Security? Spring Security是一個提供安全解決方案的框架,可在Web請求級別和方法級別上處理身份驗證和授權。 Spring安全性通過兩種方式處理安全性。 一種是安全的Web請求,另一種是在URL級別限制訪問。 Spring Security使用Serv…

計算機應用 winxp,2017年職稱計算機考試模塊WindowsXP試題

2017年職稱計算機考試模塊WindowsXP試題全國專業技術人員計算機應用能力考試是專業技術人員資格考試的一種。接下來應屆畢業生小編為大家搜索整理了2017年職稱計算機考試模塊WindowsXP試題,希望大家有所幫助。1. Windows XP中刪除某個文件的快捷方式【 A 】。A. 對原…

Python基礎(8)_迭代器、生成器、列表解析

一、迭代器 1、什么是迭代 1 重復   2 下次重復一定是基于上一次的結果而來 1 l[1,2,3,4] 2 count0 3 while count < len(l): 4 print(l[count]) 5 count1 迭代舉例2、可迭代對象 可進行.__iter__()操作的為可迭代對象 #print(isinstance(str1,Iterable)),判斷str…

Angularjs2-EXCEPTION: Response with status: 200 Ok for URL:

利用jsonp跨域請求數居&#xff0c;報錯 core.umd.js:3070 EXCEPTION: Response with status: 200 Ok for URL: 參考&#xff1a;stackoverflow 未解決。。。腦仁疼。。。有小伙伴也碰到過這個問題么&#xff1f; 16/11/30 問題解決 1.服務器端API允許跨域訪問(返回的數據添加允…

圖片無法刪除要計算機管理員,存在桌面的圖片刪不掉,怎么處理?提示是需要管理員權限。...

將下面代碼復制到記事本里&#xff0c;重命名為1.bat&#xff0c;然后打開&#xff0c;這時你右鍵圖片會出現管理員取得所有權&#xff0c;然后取得所有權后再刪除試試Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\runas]管理員取得所有權NoWorkingDirecto…

Java對象序列化的本機C / C ++類似性能

您是否曾經希望過像使用C 這樣的本地語言將Java對象轉換成字節流一樣快的速度&#xff1f; 如果您使用標準的Java序列化&#xff0c;您可能會對性能感到失望。 Java序列化的目的是與盡可能快而緊湊地序列化對象的目的截然不同。 為什么我們需要快速緊湊的序列化&#xff1f; 我…

WebStrom Sass 編譯配置 windows

第一步&#xff1a; 先安裝Ruby下載 一路next 安裝完成后打開開始菜單 打開后輸入 gem install sass sass -v 出現版本號說明成功 第二部配置webstorm 在webstorm中settings中搜索file watchers工具&#xff0c;在此工具中添加一個scss的watcher 確定&#xff0c;打開一個scss…

非本地跳轉之setjmp與longjmp

非本地跳轉(unlocal jump)是與本地跳轉相對應的一個概念。 本地跳轉主要指的是類似于goto語句的一系列應用&#xff0c;當設置了標志之后&#xff0c;可以跳到所在函數內部的標號上。然而&#xff0c;本地跳轉不能將控制權轉移到所在程序的任意地點&#xff0c;不能跨越函數&am…

清華計算機自主招生試題,2017年清華大學自主招生筆試題

2017年清華大學自主招生筆試題2017高考結束后&#xff0c;全國各大高校自主招生面試開始了&#xff0c;以下是百分網小編搜索整理的關于2017年清華大學自主招生筆試題&#xff0c;供各位參考&#xff0c;希望對大家有所幫助!想了解更多相關信息請持續關注我們應屆畢業生考試網!…

擴展劑:模式還是反模式?

擴展器模式在最近幾年變得很流行&#xff0c;甚至已經在OSGi標準&#xff08;例如&#xff0c;藍圖服務和Web應用程序規范&#xff09;中使用。 在處女座&#xff0c;我們從一開始就與擴展程序一起工作&#xff0c;但是盡管它們具有優勢&#xff0c;但它們仍有一些明顯的缺點。…

python html格式編碼

web應用如用到ace等網絡編輯器的時候&#xff0c;如要支持html,xml等格式的文件編輯&#xff0c;輸入ace 的文本內容必須先進行html格式編碼&#xff1a; def html_escape(content): import cgi return cgi.escape(content)轉載于:https://www.cnblogs.com/zhouxiaoming/p/703…

字符串替換

題目: 給定一個英文的字符串, 要求你將其中的元音刪除掉, 返回新的字符串. 例如:"This website is for losers LOL!" --> "Ths wbst s fr lsrs LL!" 當看到這個題目的時候, 第一個想起的就是re模塊的正則表達式. 不過由于最近使用過字符串的replace方…

小學計算機技術指導綱要,《中小學信息技術課程指導綱要(試行)》

《中小學信息技術課程指導綱要(試行)》2000年11月教育部頒發的《中小學信息技術課程指導綱要(試行)》教學目標&#xff1a;1、 增強信息意識&#xff0c;了解信息技術的發展變化及其對工作和社會的影響。2、 初步了解計算機基本工作原理&#xff0c;學會使用與學習和實際生活直…

JavaFX 2.0布局窗格– FlowPane和TilePane

FlowPanes和TilePanes是不錯的布局窗格&#xff0c;如果您想一個接一個地連續地水平或垂直地布局子級&#xff0c;則可以。 它們彼此非常相似&#xff0c;因為它們都將子級布置成列&#xff08;在水平Flow / TilePane的情況下&#xff09;并按其寬度或行&#xff08;在垂直Flow…

EasyRMS錄播管理服務器項目實戰:windows上開機自啟動NodeJS服務

本文轉自EasyDarwin開源團隊成員Penggy的博客&#xff1a;http://www.jianshu.com/p/ef840505ae06 近期在EasyDarwin開源團隊開發一款基于EasyDarwin在錄播服務器EasyRMS過程中,我采用node作為EasyRMS錄播服務器錄播管理服務器的開發平臺,基于node開發關于設備管理,錄像計劃,錄…

windows10搭建django1.10.3+Apache2.4

很多教程都是在linux上搭建&#xff0c;windows上似乎天生不太適合&#xff0c;但是我還是愿意試試這個坑。 首先 交代一下自己的環境 python3.5.2 64位 django 1.10.3 apache 2.4 64位 windows 10 重點在apache上。 python 和django 相信有興趣看這篇文章的基本上也都已經了解…

深入理解計算機系統 視頻教程,深入理解計算機系統1

第一章 計算機系統漫游代碼段的生命周期hello.c#include int main(){printf("hello world!\n");return 0;}1.1 前序源程序(源文件)實際上就是一個由0和1組成的位(又成比特bit)序列,8個位被組組成一組,稱為字節。每個字節表示程序中的某些文本字符(大部分的現代計算機…