日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 垃圾回收 null_java方法中把对象置null,到底能不能加速垃圾回收

發布時間:2023/12/10 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 垃圾回收 null_java方法中把对象置null,到底能不能加速垃圾回收 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天逛脈脈,看見匿名區有人說java中把對做置null,這種做法很菜,不能加速垃圾回收,但是我看到就覺得呵呵了,我是覺得可以加速置null對象回收的。

測試的過程中,費勁的是要指定一個合理的測試堆大小,然而針對的JDK不同版本不同,指定的堆大小也不同,測試出的效果有些不同,報的內存堆棧錯誤信息不一致,但是可以驗證把對象置null,是能加速垃圾回收的。

本測試程序測試在jdk7的基礎上。

1. 設定堆的大小信息,及GC打印信息

-Xms2M -Xmx3M -XX:PermSize=2M -XX:MaxPermSize=4M -XX:+PrintGCTimeStamps -XX:-PrintClassHistogram - ?XX:+PrintHeapAtGC -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime - XX:+HeapDumpOnOutOfMemoryError

2.在main方法中模擬出一個占內存很大的list對象,至少保證運行方法中單個list的大小不會擠爆內存

public class TestGC {

public static void main(String[] args) throws InterruptedException {

List list= new ArrayList();

for (int i = 0; i < 100000; i++) {

String a = new String("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");

list.add(a);

}

}

}

調整堆的大小,保證運行不會報錯堆棧溢出錯誤,接著看下面的代碼

public class TestGC {

public static void main(String[] args) throws InterruptedException {

List list= new ArrayList();

for (int i = 0; i < 100000; i++) {

String a = new String("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");

list.add(a);

}

//list =null;

Thread.sleep(1000);

List list2= new ArrayList();

for (int i = 0; i<100000; i++) {

String a = new String("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");

list2.add(a);

}

//list2 =null;

Thread.sleep(1000);

List list3= new ArrayList();

for (int i = 0; i < 100000; i++) {

String a = new String("cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc");

list3.add(a);

}

//list3 =null;

Thread.sleep(1000);

List list4= new ArrayList();

for (int i = 0; i<100000; i++) {

String a = new String("dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd");

list4.add(a);

}

//list4 =null;

Thread.sleep(1000);

List list5= new ArrayList();

for (int i = 0; i < 100000; i++) {

String a = new String("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");

list5.add(a);

}

//list5 =null;

Thread.sleep(1000);

List list6= new ArrayList();

for (int i = 0; i<100000; i++) {

String a = new String("fffffffffffffffffffffffffffffffffffffffffffffffffffffffff");

list6.add(a);

}

//list6= null;

System.out.println("??DD3é1|?£");

}

}

運行中內存溢出了,錯誤信息如下

3. 見證奇跡的時刻到了,看看到底有木有用,把代碼中的注釋放開

總結

以上是生活随笔為你收集整理的java 垃圾回收 null_java方法中把对象置null,到底能不能加速垃圾回收的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。