国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

Java基礎之堆內存溢出的解決

發(fā)布時(shí)間:2021-07-06 11:13 來(lái)源:腳本之家 閱讀:0 作者:eddie_k2 欄目: 開(kāi)發(fā)技術(shù)

目錄

一、實(shí)戰-內存溢出

  • 堆內存溢出
  • 棧內存溢出
  • 方法區溢出
  • 直接內存溢出

二、實(shí)戰-堆內存溢出

  • 演示堆內存溢出代碼,并且定位問(wèn)題
  • 總結堆內存溢出的場(chǎng)景與解決方案
  • 分析商城項目中可能存在堆內存溢出的代碼并且解決

三、堆內存溢出演示代碼

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)

在項目的根目錄會(huì )自動(dòng)創(chuàng )建 java_pid18940.hprof 的文件

Mac系統:mat.app

Win系統:Eclipse Memory Analyzer

四、Eclipse Memory Analyzer 分析流程

  • File -> Open Heap Dump,加載剛才產(chǎn)生的hprof文件,選擇Leak Suspects Report
  • 在Overview, 鼠標移動(dòng)到拼圖,可以看出
  • java.lang.Thread @ 0xff1dbc28 main
  • Shallow Size: 120 B RetainedSize: 10.9 MB (明顯不正常的)
  • 點(diǎn)擊 ++Leak Suspects:++ includes leak suspects and a system overview.
  • Problem Suspect 1 會(huì )提示方法占用空間的百分比
  • 點(diǎn)擊 Details » Accumulated Objects in Dominator Tree
  • 點(diǎn)擊 java.lang.Object[160065] @ 0xffe00000
  • List objects --> with incoming references (別人調用自己)

Leak Suspects » Leaks » Problem Suspect 1 » Description » See stacktrace 也是可以看出問(wèn)題的

jvisualvm.exe 分析堆內存溢出

五、堆內存溢出的場(chǎng)景

  • 內存泄露

借助工具定位問(wèn)題

  • 非內存泄露

-Xms -Xmx 分配不合理

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

1.通過(guò)控制pageSize判斷

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

2.SpringMVC方式

類(lèi)頭加注解

@Validated

pageSize的入參加注解

@Max(100)

到此這篇關(guān)于Java基礎之堆內存溢出的解決的文章就介紹到這了,更多相關(guān)Java解決堆內存溢出內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。

免费看国产曰批40分钟| 成全我在线观看免费观看| 国产精品美女久久久久久| 成年网站在线在免费线播放欧美| 久久午夜伦鲁片免费无码| 亚洲乱码中文字幕在线|