Java垃圾回收jconsole分析
環(huán)境
jdk1.8+Mac+Idea
為了便于觀察我們設(shè)置了虛擬機的參數(shù)VM oprions,-Xms10m -Xmx10m
代碼案例1:
新建了一個數(shù)組,向里面添加100個OutOfMemory
package com.rumenz;
import java.util.ArrayList;
import java.util.List;
public class OutOfMemory {
public byte []one=new byte[128*1024];
public static void main(String[] args) throws InterruptedException {
Thread.sleep(5000); //延時5秒,方便我們打開`jconsole`
append(100);
}
private static void append(int n) throws InterruptedException {
List<OutOfMemory> list=new ArrayList<>();
for (int i = 0; i < n; i++) {
Thread.sleep(3000); //拖慢添加速度,方便我們觀察
list.add(new OutOfMemory());
}
}
}運行程序后迅速打開jconsole,并找到自己編寫的類,點擊進入,選擇不安全鏈接
> jconsole

由于我們使用的是成員變量,所以垃圾回收器一致不能回收內(nèi)存,所以整個堆的內(nèi)存趨勢是一路上漲.

代碼案例2:
package com.rumenz;
import java.util.ArrayList;
import java.util.List;
public class OutOfMemory {
public OutOfMemory() {
byte []one=new byte[128*1024];
}
public static void main(String[] args) throws InterruptedException {
Thread.sleep(5000);
append(100);
}
private static void append(int n) throws InterruptedException {
List<OutOfMemory> list=new ArrayList<>();
for (int i = 0; i < n; i++) {
Thread.sleep(3000);
list.add(new OutOfMemory());
}
}
} 與上面代碼的區(qū)別我們one變量有成員變量變成了局部變量. 局部變量在棧上分配內(nèi)存,當(dāng)方法結(jié)束,??臻g消失,棧上的變量或者引用地址將失效,本案例中one對象是分配在堆內(nèi)存上,??臻g的消失導(dǎo)致one對象無法被使用到,隨后就會被垃圾回收掉. 所以本案例的堆內(nèi)存變量將呈現(xiàn)出折線的效果.

以上就是Java垃圾回收jconsole分析的詳細內(nèi)容,更多關(guān)于Java垃圾回收jconsole的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
springcloud client指定注冊到eureka的ip與端口號方式
這篇文章主要介紹了springcloud client指定注冊到eureka的ip與端口號方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
SpringBoot+Logback實現(xiàn)一個簡單的鏈路追蹤功能
Spring Boot默認使用LogBack日志系統(tǒng),并且已經(jīng)引入了相關(guān)的jar包,所以我們無需任何配置便可以使用LogBack打印日志。這篇文章主要介紹了SpringBoot+Logback實現(xiàn)一個簡單的鏈路追蹤功能,需要的朋友可以參考下2019-10-10
SpringBoot使用Mybatis-Generator配置過程詳解
這篇文章主要介紹了SpringBoot使用Mybatis-Generator配置過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-02-02
spring項目自定義全局響應(yīng)處理器統(tǒng)一處理響應(yīng)結(jié)果的實現(xiàn)步驟
本文詳細描述了如何通過@ControllerAdvice和ResponseBodyAdvice在SpringMVC項目中創(chuàng)建自定義響應(yīng)處理器,以及如何使用Wrapper類包裝和標(biāo)準(zhǔn)化返回結(jié)果,感興趣的朋友跟隨小編一起看看吧2025-01-01
基于Spring Boot使用JpaRepository刪除數(shù)據(jù)時的注意事項
這篇文章主要介紹了Spring Boot使用JpaRepository刪除數(shù)據(jù)時的注意事項,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06

