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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java list clear 垃圾回收_list.clear()vs list = new ArrayList Integer(); [重复]

發布時間:2024/10/8 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java list clear 垃圾回收_list.clear()vs list = new ArrayList Integer(); [重复] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題

這個問題在這里已有答案:

清空一個ArrayList或者只是創建一個新的ArrayList并將舊的那個垃圾收集? [重復] 4個答案

Map.clear()vs new Map:哪一個更好? [重復] 7個答案

清除ArrayList的兩個選項中哪一個更好更快,為什么?

list.clear()

要么

list = new ArrayList();

碰巧我必須在隨機的時間清除我的ArrayList中的所有條目,我無法知道將來會有多少新條目,可能有0或1000.哪種方法更快更好,為什么?

#1 熱門回答(67 贊)

沒有基準測試很難知道,但是如果你的ArrayList中有很多項目并且平均大小較低,那么創建一個新的ArrayList可能會更快。

http://www.docjar.com/html/api/java/util/ArrayList.java.html

public void clear() {

modCount++;

// Let gc do its work

for (int i = 0; i < size; i++)

elementData[i] = null;

size = 0;

}

#2 熱門回答(23 贊)

List.clear將刪除元素而不會降低列表的容量。

groovy:000> mylist = [1,2,3,4,5,6,7,8,9,10,11,12]

===> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

groovy:000> mylist.elementData.length

===> 12

groovy:000> mylist.elementData

===> [Ljava.lang.Object;@19d6af

groovy:000> mylist.clear()

===> null

groovy:000> mylist.elementData.length

===> 12

groovy:000> mylist.elementData

===> [Ljava.lang.Object;@19d6af

groovy:000> mylist = new ArrayList();

===> []

groovy:000> mylist.elementData

===> [Ljava.lang.Object;@2bfdff

groovy:000> mylist.elementData.length

===> 10

這里mylist被清除了,對它所持有的元素的引用被刪除了,但它保留了相同的后備數組。然后mylist重新初始化并得到一個新的后備陣列,舊的得到了GCed。因此,一種方式保留在內存中,另一種方式拋出其內存并從頭開始重新分配(使用默認容量)。哪個更好取決于你是否要減少垃圾收集流失或最小化當前未使用的內存量。列表是否足夠長以便移出伊甸園可能是決定哪個更快的一個因素(因為這可能使垃圾收集更加昂貴)。

#3 熱門回答(15 贊)

我認為答案是它取決于一系列因素,例如:

是否可以預先預測列表的大小(即,你是否可以準確設置容量),

列表大小是否可變,

列表的生命周期在兩個版本中都有多長,和

你的堆/ GC參數和CPU。

這些使得很難預測哪個更好。但我的直覺是差異不會那么大。

兩點建議:

不要浪費時間嘗試優化這個...除非應用程序客觀上太慢>>和<

如果你決定優化這個,那就科學地做。嘗試兩種(所有)備選方案,并通過在實際問題/工作負載/輸入集上測量實際應用程序的性能來確定哪種方案最佳。 (由于上面列出的因素,人工基準測試不太可能為你提供可以使用的答案。)

總結

以上是生活随笔為你收集整理的java list clear 垃圾回收_list.clear()vs list = new ArrayList Integer(); [重复]的全部內容,希望文章能夠幫你解決所遇到的問題。

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