欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用GenericObjectPool避免泄漏設(shè)置方法

 更新時(shí)間:2023年09月24日 08:45:42   作者:channingbj  
這篇文章主要為大家介紹了使用GenericObjectPool避免泄漏的設(shè)置方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

GenericObjectPool

GenericObjectPool 是 Apache Commons Pool 提供的對(duì)象池,使用的時(shí)候需要調(diào)用 borrowObject 獲取一個(gè)對(duì)象,使用完以后需要調(diào)用 returnObject 歸還對(duì)象,或者調(diào)用 invalidateObject 將這個(gè)對(duì)象標(biāo)記為不可再用。

實(shí)際應(yīng)用中由于程序?qū)崿F(xiàn)的問(wèn)題,可能造成在一些極端的情況下出現(xiàn) borrowObject/invalidateObject 沒(méi)有被調(diào)用導(dǎo)致的泄漏問(wèn)題。

對(duì)象泄漏會(huì)導(dǎo)致對(duì)象池中的對(duì)象數(shù)量一直上升,達(dá)到設(shè)置的上限以后再調(diào)用 borrowObject 就會(huì)永遠(yuǎn)等待或者拋出 java.util.NoSuchElementException: Timeout waiting for idle object 異常。

對(duì)于這種問(wèn)題,一方面是從應(yīng)用實(shí)現(xiàn)上進(jìn)行排查,另一方面可以通過(guò) GenericObjectPool 自帶的機(jī)制進(jìn)行清理。

設(shè)置自動(dòng)清理

設(shè)置拋棄時(shí)間

GenericObjectPool判斷一個(gè)對(duì)象是否泄漏是根據(jù)對(duì)象最后一次使用或者最后一次borrow的時(shí)間進(jìn)行判斷的,如果超出了預(yù)設(shè)的值就會(huì)被認(rèn)為是一個(gè)泄漏的對(duì)象被清理掉(PooledObjectFactory.destroyObject在這一過(guò)程中會(huì)被調(diào)用)。

拋棄時(shí)間可以通過(guò) AbandonedConfig.setRemoveAbandonedTimeout 進(jìn)行設(shè)置,時(shí)間單位是秒。

打開(kāi)泄漏清理

設(shè)置了拋棄時(shí)間以后還需要打開(kāi)泄漏清理才會(huì)生效。泄漏判斷的開(kāi)啟可以通過(guò)兩種方式:

  • 從對(duì)象池中獲取對(duì)象的時(shí)候進(jìn)行清理

如果當(dāng)前對(duì)象池中少于2個(gè)idle狀態(tài)的對(duì)象或者 active數(shù)量>最大對(duì)象數(shù)-3 的時(shí)候,在borrow對(duì)象的時(shí)候啟動(dòng)泄漏清理。通過(guò) AbandonedConfig.setRemoveAbandonedOnBorrow 為 true 進(jìn)行開(kāi)啟。

  • 啟動(dòng)定時(shí)任務(wù)進(jìn)行清理

AbandonedConfig.setRemoveAbandonedOnMaintenance 設(shè)置為 true 以后,在維護(hù)任務(wù)運(yùn)行的時(shí)候會(huì)進(jìn)行泄漏對(duì)象的清理,可以通過(guò) GenericObjectPool.setTimeBetweenEvictionRunsMillis 設(shè)置維護(hù)任務(wù)執(zhí)行的時(shí)間間隔。

GenericObjectPool<PoolObj> pool = new GenericObjectPool<PoolObj>(new MyPooledObjectFactory(),config);
AbandonedConfig abandonedConfig = new AbandonedConfig();
abandonedConfig.setRemoveAbandonedOnMaintenance(true); //在Maintenance的時(shí)候檢查是否有泄漏
abandonedConfig.setRemoveAbandonedOnBorrow(true); //borrow 的時(shí)候檢查泄漏
abandonedConfig.setRemoveAbandonedTimeout(10); //如果一個(gè)對(duì)象borrow之后10秒還沒(méi)有返還給pool,認(rèn)為是泄漏的對(duì)象
pool.setAbandonedConfig(abandonedConfig);
pool.setTimeBetweenEvictionRunsMillis(5000); //5秒運(yùn)行一次維護(hù)任務(wù)

以上就是使用GenericObjectPool避免泄漏設(shè)置方法的詳細(xì)內(nèi)容,更多關(guān)于GenericObjectPool避免泄漏的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Springboot系列之kafka操作使用詳解

    Springboot系列之kafka操作使用詳解

    這篇文章主要為大家介紹了Springboot系列之kafka操作使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • JVM致命錯(cuò)誤日志詳解(最新推薦)

    JVM致命錯(cuò)誤日志詳解(最新推薦)

    這篇文章主要介紹了JVM致命錯(cuò)誤日志詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • ChatGPT介紹及Java?API調(diào)用

    ChatGPT介紹及Java?API調(diào)用

    本文主要介紹了ChatGPT介紹及Java?API調(diào)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Java字符編碼原理(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)

    Java字符編碼原理(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)

    Java開(kāi)發(fā)中,常常會(huì)遇到亂碼的問(wèn)題,一旦遇到這種問(wèn)題,常常比較煩惱,大家都不想承認(rèn)是自己的代碼問(wèn)題,其實(shí)搞明白編碼的本質(zhì)過(guò)程就簡(jiǎn)單多了,接下來(lái)小編給大家?guī)?lái)java字符編碼原理,要求看看吧
    2017-04-04
  • Java函數(shù)式編程之通過(guò)行為參數(shù)化傳遞代碼

    Java函數(shù)式編程之通過(guò)行為參數(shù)化傳遞代碼

    行為參數(shù)化就是可以幫助你處理頻繁變更的需求的一種軟件開(kāi)發(fā)模式,這篇文章將給大家詳細(xì)的介紹一下Java函數(shù)式編程之行為參數(shù)化傳遞代碼,感興趣的同學(xué)可以參考閱讀下
    2023-08-08
  • Java超詳細(xì)講解三大特性之一的繼承

    Java超詳細(xì)講解三大特性之一的繼承

    繼承就是可以直接使用前輩的屬性和方法。自然界如果沒(méi)有繼承,那一切都是處于混沌狀態(tài)。多態(tài)是同一個(gè)行為具有多個(gè)不同表現(xiàn)形式或形態(tài)的能力。多態(tài)就是同一個(gè)接口,使用不同的實(shí)例而執(zhí)行不同操作
    2022-05-05
  • SpringMVC @RequestMapping注解作用詳解

    SpringMVC @RequestMapping注解作用詳解

    通過(guò)@RequestMapping注解可以定義不同的處理器映射規(guī)則,下面這篇文章主要給大家介紹了關(guān)于SpringMVC中@RequestMapping注解用法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • Spring?boot?整合Logback過(guò)程示例解析

    Spring?boot?整合Logback過(guò)程示例解析

    這篇文章主要為大家介紹了Spring?boot?整合Logback的過(guò)程及示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • java 后臺(tái)將base64字符串保存為圖片的方法

    java 后臺(tái)將base64字符串保存為圖片的方法

    本篇文章主要介紹了java 后臺(tái)將base64字符串保存為圖片的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • 史上最全圖文講解Java泛型

    史上最全圖文講解Java泛型

    泛型在java中有很重要的地位,在面向?qū)ο缶幊碳案鞣N設(shè)計(jì)模式中有非常廣泛的應(yīng)用,下面這篇文章主要給大家介紹了Java泛型的相關(guān)資料,需要的朋友可以參考下
    2022-02-02

最新評(píng)論