第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否有可能在java中捕獲內(nèi)存不足?

是否有可能在java中捕獲內(nèi)存不足?

慕田峪9158850 2019-09-02 16:01:31
我正在開發(fā)一個需要大量內(nèi)存的程序,我想在發(fā)生內(nèi)存不足異常時捕獲。我聽說這是不可能做到的,但是如果在這方面有任何發(fā)展,我很好奇。
查看完整描述

3 回答

?
SMILET

TA貢獻1796條經(jīng)驗 獲得超4個贊

這不是例外; 這是一個錯誤:java.lang.OutOfMemoryError


從Throwable下降時你可以捕獲它:


try {

    // create lots of objects here and stash them somewhere

} catch (OutOfMemoryError E) {

    // release some (all) of the above objects

}

但是,除非你正在做一些相當具體的事情(比如在特定的代碼段中分配大量的東西),否則你可能無法捕獲它,因為你不知道它會從哪里被拋出。


查看完整回答
反對 回復 2019-09-02
?
天涯盡頭無女友

TA貢獻1831條經(jīng)驗 獲得超9個贊

您可以捕獲并嘗試從OutOfMemoryError(OOM)異常中恢復,但這可能是一個糟糕的想法 ...特別是如果您的目標是讓應用程序“繼續(xù)”。

有許多的原因:

  1. 正如其他人所指出的那樣,有更好的方法來管理內(nèi)存資源而不是明確地釋放內(nèi)容; 即對內(nèi)存較短時可以釋放的對象使用SoftReference和WeakReference。

  2. 如果你等到實際耗盡內(nèi)存之前你的應用程序,你的應用程序可能會花更多的時間來運行垃圾收集器。根據(jù)您的JVM版本和GC調(diào)整參數(shù),JVM可能會越來越頻繁地運行GC,因為它接近拋出OOM的點。減速(就應用程序做有用的工作而言)可能很重要。你可能想避免這種情況。

  3. 如果您的問題的根本原因是內(nèi)存泄漏,那么從OOM捕獲和恢復的可能性將無法回收泄漏的內(nèi)存。您的應用程序?qū)⒃俅纬掷m(xù)一段時間,然后再次,并再次以不斷減少的間隔。

所以我的建議是不要試圖繼續(xù)從OOM出發(fā)...除非你知道

  • OOM發(fā)生的地點和原因,

  • 沒有任何“附帶損害”,并且

  • 您的恢復將釋放足夠的內(nèi)存以繼續(xù)。


查看完整回答
反對 回復 2019-09-02
  • 3 回答
  • 0 關(guān)注
  • 513 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號