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)存,當方法結(jié)束,棧空間消失,棧上的變量或者引用地址將失效,本案例中one
對象是分配在堆內(nèi)存上,??臻g的消失導致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-03SpringBoot+Logback實現(xiàn)一個簡單的鏈路追蹤功能
Spring Boot默認使用LogBack日志系統(tǒng),并且已經(jīng)引入了相關(guān)的jar包,所以我們無需任何配置便可以使用LogBack打印日志。這篇文章主要介紹了SpringBoot+Logback實現(xiàn)一個簡單的鏈路追蹤功能,需要的朋友可以參考下2019-10-10SpringBoot使用Mybatis-Generator配置過程詳解
這篇文章主要介紹了SpringBoot使用Mybatis-Generator配置過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-02-02spring項目自定義全局響應處理器統(tǒng)一處理響應結(jié)果的實現(xiàn)步驟
本文詳細描述了如何通過@ControllerAdvice和ResponseBodyAdvice在SpringMVC項目中創(chuàng)建自定義響應處理器,以及如何使用Wrapper類包裝和標準化返回結(jié)果,感興趣的朋友跟隨小編一起看看吧2025-01-01基于Spring Boot使用JpaRepository刪除數(shù)據(jù)時的注意事項
這篇文章主要介紹了Spring Boot使用JpaRepository刪除數(shù)據(jù)時的注意事項,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06