国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

記一次內存溢出問題

2019-11-14 22:31:53
字體:
來源:轉載
供稿:網友
記一次內存溢出問題

最近碰到的一次內存溢出問題,記錄一下(只記錄正確找出問題的方法,其它的各種不提),也以此來重新開始自己的博客園之旅。

Tomcat打包發布后,一切OK,回歸測試也沒問題。但是運行一段時間后卻報內存溢出,服務器shutdown,重起數次失敗后直接停掉。

運維人員不在,拿不到堆棧日志,先對那段時間的人員操作日志結合catalina日志進行分析。發現開始出問題的時間,開始出現某一個頁面的操作,初步懷疑是這個頁面相關的代碼引起的;接著就看相關代碼提交日志,居然沒看出問題。后來找運維要到堆棧日志,問題還是定位到這里,在經驗更豐富的同事的幫助下,定位到以下代碼:

select id, other_id from tbl where 1=1

<if test="ids != null ">

and other_id in

<foreach item="item" index="index" collection="ids" open="(" separator="," close=")">

#{item}

</foreach>

</if>

如果ids==null,就會把整個表里的數據掃出來,而tbl表中的數據有1千多萬,直接把內存撐爆了。而最終的原因就是在調用方法前沒有對ids的list進行非空判斷。

總結:對于java的集合,使用之前盡量進行非空判斷,可以用CollectionUtils.isEmpty()方法;對于大表的sql語句,一定要檢驗所有if判斷條件都不成立時的查詢結果。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巴塘县| 隆德县| 内黄县| 哈尔滨市| 罗山县| 扬州市| 铁岭县| 农安县| 眉山市| 绥德县| 瑞金市| 竹山县| 阳谷县| 平舆县| 广南县| 祁东县| 高雄市| 五华县| 巴楚县| 汉源县| 沂源县| 米泉市| 崇阳县| 聊城市| 通许县| 白朗县| 虹口区| 上虞市| 罗山县| 临邑县| 榆社县| 温泉县| 黄梅县| 阿克| 沐川县| 当涂县| 新竹市| 博客| 元氏县| 昆山市| 万年县|