91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中出現堆內存溢出如何解決

發布時間:2021-05-10 15:51:18 來源:億速云 閱讀:475 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關Java中出現堆內存溢出如何解決,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

Java可以用來干什么

Java主要應用于:1. web開發;2. Android開發;3. 客戶端開發;4. 網頁開發;5. 企業級應用開發;6. Java大數據開發;7.游戲開發等。

一、實戰-內存溢出

  • 堆內存溢出

  • 棧內存溢出

  • 方法區溢出

  • 直接內存溢出

二、實戰-堆內存溢出

  • 演示堆內存溢出代碼,并且定位問題

  • 總結堆內存溢出的場景與解決方案

  • 分析商城項目中可能存在堆內存溢出的代碼并且解決

三、堆內存溢出演示代碼

public class HeapOOMTest {
    private List<String> oomList = new ArrayList<>();

    public static void main(String[] args) {
        HeapOOMTest oomTest = new HeapOOMTest();
        while (true) {
            oomTest.oomList.add(UUID.randomUUID().toString());
        }
    }
}

VM Args:-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError

運行該代碼的Main方法

java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid18940.hprof ...
Heap dump file created [23854536 bytes in 0.061 secs]
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
	at java.base/java.lang.Long.fastUUID(Long.java:441)
	at java.base/java.lang.System$2.fastUUID(System.java:2136)
	at java.base/java.util.UUID.toString(UUID.java:395)
	at com.imooc.jvminaction.HeapOOMTest.main(HeapOOMTest.java:16)

在項目的根目錄會自動創建 java_pid18940.hprof 的文件

Mac系統:mat.app

Win系統:Eclipse Memory Analyzer

四、Eclipse Memory Analyzer 分析流程

  • File -> Open Heap Dump,加載剛才產生的hprof文件,選擇Leak Suspects Report

  • 在Overview, 鼠標移動到拼圖,可以看出

  • java.lang.Thread @ 0xff1dbc28 main

  • Shallow Size: 120 B RetainedSize: 10.9 MB (明顯不正常的)

  • 點擊 ++Leak Suspects:++ includes leak suspects and a system overview.

  • Problem Suspect 1 會提示方法占用空間的百分比

  • 點擊 Details &raquo; Accumulated Objects in Dominator Tree

  • 點擊 java.lang.Object[160065] @ 0xffe00000

  • List objects --> with incoming references (別人調用自己)

Leak Suspects &raquo; Leaks &raquo; Problem Suspect 1 &raquo; Description &raquo; See stacktrace 也是可以看出問題的

Java中出現堆內存溢出如何解決

jvisualvm.exe 分析堆內存溢出

Java中出現堆內存溢出如何解決

Java中出現堆內存溢出如何解決

Java中出現堆內存溢出如何解決

五、堆內存溢出的場景

  • 內存泄露

借助工具定位問題

  • 非內存泄露

-Xms -Xmx 分配不合理

六、商城項目可能存在堆內存溢出的方法

1.通過控制pageSize判斷

if (pageSize > 100) {
    pageSize = 100;
}

2.SpringMVC方式

類頭加注解

@Validated

pageSize的入參加注解

@Max(100)

Java中出現堆內存溢出如何解決

看完上述內容,你們對Java中出現堆內存溢出如何解決有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

师宗县| 长岛县| 河津市| 太原市| 揭西县| 松溪县| 蓬安县| 上林县| 阳东县| 涿鹿县| 垦利县| 太白县| 安泽县| 社旗县| 沐川县| 岳普湖县| 启东市| 大竹县| 眉山市| 红原县| 隆子县| 德保县| 镇平县| 海安县| SHOW| 澄城县| 西华县| 北宁市| 绵阳市| 仙游县| 阿克苏市| 会泽县| 崇明县| 永昌县| 梁河县| 鄂伦春自治旗| 资源县| 乌鲁木齐市| 拉萨市| 延寿县| 巴东县|