国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java jvm 內(nèi)存溢出分析

這篇具有很好參考價值的文章主要介紹了Java jvm 內(nèi)存溢出分析。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.如何分析jvm內(nèi)存溢出呢

Java jvm 內(nèi)存溢出分析,java,jvm,開發(fā)語言

我們經(jīng)常用visualVm監(jiān)控Jvm的內(nèi)存,cpu,線程的使用情況,通??梢愿鶕?jù)內(nèi)存不斷增長來判斷內(nèi)存是否存在不釋放。但是我們不可能時時盯著去看,這里涉及jvm堆內(nèi)存配置,堆內(nèi)存參數(shù)配置和調(diào)優(yōu)會在其他章節(jié)編寫。

Java jvm 內(nèi)存溢出分析,java,jvm,開發(fā)語言如果真是內(nèi)存溢出了,線上出現(xiàn)的我們需要配置JVm內(nèi)存溢出,建議線上一定要配置此參數(shù)XX:+HeapDumpOnOutOfMemoryError,否則到時不好分析線上問題。

-Xms100m -Xmx100m -XX:+HeapDumpOnOutOfMemoryError?

?2.編寫我們自己的代碼

接下來我們模擬內(nèi)存溢出代碼?

@Getter
@Setter
@ToString
public class HeapBean {
    private int userId;
    private String name;
    private String phone;
}
package com.es.Controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
public class HeapController {

    private List<HeapBean> userlist = new ArrayList<>();
    private Map hashMap=new HashMap<>();

    //堆區(qū)內(nèi)存溢出
    @GetMapping("/heapOom")
    public void heapOverTest() {
        int i = 0;
        while (true) {
            //heaplist.add(new heapBean());
            hashMap.put(i, new HeapBean());
            i++;
        }
    }
}

本地啟動代碼,后請求實際地址。

Java jvm 內(nèi)存溢出分析,java,jvm,開發(fā)語言

運行到一定時間,就會生成hprof文件。

java.lang.OutOfMemoryError: GC overhead limit exceeded
Dumping heap to java_pid16868.hprof ...
Heap dump file created [171733163 bytes in 0.854 secs]
Exception in thread "File Watcher" java.lang.OutOfMemoryError: GC overhead limit exceeded
	at java.lang.String.toLowerCase(String.java:2647)
	at java.io.WinNTFileSystem.hashCode(WinNTFileSystem.java:640)
	at java.io.File.hashCode(File.java:2132)
	at org.springframework.boot.devtools.filewatch.FileSnapshot.hashCode(FileSnapshot.java:72)
	at java.util.HashMap.hash(HashMap.java:338)
	at java.util.HashMap.put(HashMap.java:611)
	at java.util.HashSet.add(HashSet.java:219)
	at org.springframework.boot.devtools.filewatch.DirectorySnapshot.collectFiles(DirectorySnapshot.java:70)
	at org.springframework.boot.devtools.filewatch.DirectorySnapshot.collectFiles(DirectorySnapshot.java:67)

通過everything找到這個文件.

?Java jvm 內(nèi)存溢出分析,java,jvm,開發(fā)語言

3.需要用到eclipse Memory Analyzer工具

Eclipse Memory Analyzer(簡稱MAT)是一個功能豐富且操作簡單的JVM Heap Dump分析工具,可以用來輔助發(fā)現(xiàn)內(nèi)存泄漏減少內(nèi)存占用。

點擊下載

Java jvm 內(nèi)存溢出分析,java,jvm,開發(fā)語言

?點擊“MemoryAnalyzer.exe”,啟動分析內(nèi)存工具。

Java jvm 內(nèi)存溢出分析,java,jvm,開發(fā)語言

?打開java_pid16868.hprof文件

Java jvm 內(nèi)存溢出分析,java,jvm,開發(fā)語言

按照紅色選項點擊Finish確認(rèn),看到占用最多的40.5MB。

Java jvm 內(nèi)存溢出分析,java,jvm,開發(fā)語言

往下移動看到具體占用的類

Java jvm 內(nèi)存溢出分析,java,jvm,開發(fā)語言

點擊details,看到我們自己的類。

Java jvm 內(nèi)存溢出分析,java,jvm,開發(fā)語言

?繼續(xù)往下,看到對象的總數(shù)和占用的堆內(nèi)存。

Java jvm 內(nèi)存溢出分析,java,jvm,開發(fā)語言

4.總結(jié)?

?總結(jié)最后到時HeapControler中的hashMap導(dǎo)致的內(nèi)存溢出。文章來源地址http://www.zghlxwxcb.cn/news/detail-706905.html

到了這里,關(guān)于Java jvm 內(nèi)存溢出分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • jvm內(nèi)存溢出排查(使用idea自帶的內(nèi)存泄漏分析工具)

    jvm內(nèi)存溢出排查(使用idea自帶的內(nèi)存泄漏分析工具)

    想分析堆內(nèi)存溢出,一定在運行jar包時就寫上參數(shù) -XX:+HeapDumpOnOutOfMemoryError ,可以看我之前關(guān)于如何運行jar包的文章。若你沒有寫。可以寫上參數(shù),重啟你的項目,等你的項目發(fā)生下一次堆內(nèi)存溢出異常,在運行的同級文件夾,將產(chǎn)生類似這樣一個文件 java_pid74935.hprof ,若你

    2024年02月09日
    瀏覽(30)
  • 開發(fā)筆記之:文件讀取值溢出bug分析(JAVA版)

    開發(fā)筆記之:文件讀取值溢出bug分析(JAVA版)

    (1)引言 ?以下是Java讀取數(shù)據(jù)文件(FileInputStream)的代碼: ?其意圖很簡單:從當(dāng)前游標(biāo)位置讀取一個雙字(4字節(jié))數(shù)據(jù)。 稍微復(fù)雜一點的就是一個字節(jié)序的考慮。 (2)問題 ?該代碼做UT(單元測試)時,遇到了讀取中斷的問題(就是文件還沒讀取完就提前中斷了)。

    2024年02月05日
    瀏覽(18)
  • JVM逃逸分析原理解析:優(yōu)化Java程序性能和內(nèi)存利用效率

    在Java開發(fā)中,性能和內(nèi)存利用效率一直是開發(fā)者關(guān)注的焦點。為了提高Java程序的執(zhí)行效率,JVM引入了逃逸分析技術(shù)。本文將詳細(xì)解析JVM逃逸分析的原理,幫助讀者深入理解其工作機(jī)制。 逃逸分析是一種用于確定對象在方法的生命周期內(nèi)是否逃逸出方法外部范圍的技術(shù)。在

    2024年01月20日
    瀏覽(87)
  • Java虛擬機(jī)(JVM):堆溢出

    Java虛擬機(jī)(JVM):堆溢出

    Java堆溢出(Java Heap Overflow)是指在Java程序中,當(dāng)創(chuàng)建對象時,無法分配足夠的內(nèi)存空間來存儲對象,導(dǎo)致堆內(nèi)存溢出的情況。 Java堆是Java虛擬機(jī)中用于存儲對象的一塊內(nèi)存區(qū)域。當(dāng)程序創(chuàng)建對象時,會在堆中分配一塊連續(xù)的內(nèi)存空間來存儲對象的實例變量。如果堆中的剩余

    2024年02月12日
    瀏覽(26)
  • Java中的內(nèi)存泄露、內(nèi)存溢出與棧溢出

    大家好,我是歐陽方超。本次就Java中幾個相似而又不同的概念做一下介紹。內(nèi)存泄漏、內(nèi)存溢出和棧溢出都是與內(nèi)存相關(guān)的問題,但它們之間有所不同。 我們經(jīng)常會遇到內(nèi)存泄漏、內(nèi)存溢出和棧溢出等問題,這些問題都與內(nèi)存的使用有關(guān)。 內(nèi)存泄漏(memory leak)指的是程序

    2024年02月03日
    瀏覽(22)
  • Java虛擬機(jī)(JVM):虛擬機(jī)棧溢出

    Java虛擬機(jī)(JVM):虛擬機(jī)棧溢出

    Java虛擬機(jī)棧溢出(Java Virtual Machine Stack Overflow)是指在Java程序中,當(dāng)線程調(diào)用的方法層級過深,導(dǎo)致??臻g溢出的情況。 Java虛擬機(jī)棧是每個線程私有的,用于存儲方法的調(diào)用和局部變量的內(nèi)存空間。每當(dāng)一個方法被調(diào)用時,會在棧中創(chuàng)建一個棧幀,用于存儲方法的參數(shù)、局

    2024年02月12日
    瀏覽(21)
  • 深入理解Java虛擬機(jī)(二)Java內(nèi)存區(qū)域與內(nèi)存溢出異常

    深入理解Java虛擬機(jī)(二)Java內(nèi)存區(qū)域與內(nèi)存溢出異常

    ????????對于Java程序員來說,在虛擬機(jī)自動內(nèi)存管理機(jī)制的幫助下,不再需要為每一個new操作去寫配對的delete/free代碼,不容易出現(xiàn)內(nèi)存泄漏和內(nèi)存溢出問題,看起來由虛擬機(jī)管理內(nèi)存一切都很美好。不過,也正是因為Java程序員把控制內(nèi)存的權(quán)力交給了Java虛擬機(jī),一旦出

    2024年02月16日
    瀏覽(20)
  • 【Java】Java內(nèi)存溢出:原因、預(yù)防和解決方法

    【Java】Java內(nèi)存溢出:原因、預(yù)防和解決方法

    人不走空 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 目錄 ????????個人主頁:人不走空?????? ??系列專欄:算法專題 ?詩詞歌賦:斯是陋室,惟吾德馨 什么是Java內(nèi)存溢出? 內(nèi)存溢出的原因 內(nèi)存溢出的預(yù)防方法 內(nèi)存溢出的解決方

    2024年03月23日
    瀏覽(25)
  • Java中的內(nèi)存溢出與內(nèi)存泄漏深度解析

    目錄 引言 一. 內(nèi)存溢出(Memory Overflow) 1.1 堆內(nèi)存溢出 1.2 棧內(nèi)存溢出 1.3?內(nèi)存溢出的解決策略 1.3.1 優(yōu)化對象的創(chuàng)建和銷毀 1.3.2?調(diào)整堆內(nèi)存大小 1.3.3??使用內(nèi)存分析工具 1.3.4?避免創(chuàng)建過大的對象 1.3.5 定期清理不再使用的對象 二、 內(nèi)存泄漏(Memory Leak) 2.1Java內(nèi)存泄漏的典

    2024年02月19日
    瀏覽(23)
  • Java 內(nèi)存溢出(一)原因、復(fù)現(xiàn)、排查

    Java 內(nèi)存溢出(一)原因、復(fù)現(xiàn)、排查

    內(nèi)存溢出: 是指應(yīng)用系統(tǒng)中存在無法回收的內(nèi)存或使用的內(nèi)存過多,最終使得程序運行要用到的內(nèi)存大于虛擬機(jī)能提供的最大內(nèi)存。這篇文章整理自《深入理解 java 虛擬機(jī)》。 內(nèi)存溢出就是內(nèi)存不夠,引起內(nèi)存溢出的原因有很多種,常見的有以下幾種: 內(nèi)存中加載的數(shù)據(jù)量

    2024年02月04日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包