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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

关于Java垃圾收集

發布時間:2023/12/3 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于Java垃圾收集 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文討論的是使用的最受歡迎的框架之一帶來的開銷–我敢打賭,幾乎沒有應用程序不使用java.util.Collections。

本文基于以下事實:框架為例如集合的初始大小提供了默認值。 因此,我們有一個假設,即大多數人不會費心地自行管理其收藏的大小,因此最終會導致未充分利用的收藏浪費了內存。 如果是這樣,我們可以實施一個解決方案,告訴人們創建半空集合的位置以及如何避免浪費內存。

測量

為了檢驗我們的假設,我們決定測量十三種最常見的java.util.Collection成員的用法:

  • java.util.HashMap
  • java.util.WeakHashMap
  • java.util.IdentityHashMap
  • java.util.Hashtable
  • java.util.LinkedHashMap
  • java.util.HashSet
  • java.util.LinkedHashSet
  • java.util.ArrayList
  • java.util.concurrent.ArrayBlockingQueue
  • java.util.Vector
  • java.util.ArrayDeque
  • java.util.PriorityQueue
  • java.util.concurrent.ConcurrentHashMap

對于從這些類派生的所有對象,我們每30秒測量一次集合中包含的對象的數量以及集合底層數組中的空白空間的數量。 這種空空間消耗的內存量浪費了集合。 使用特殊版本的Plumbr從556個不同的實際應用程序中收集了這些數據。

結果

為了估計問題的嚴重程度,我們在每30秒后計算了所有收集的總浪費,并針對每個會話取了這些總計的最大值和平均值。 從下圖還可以看到,大多數會話(556個中的397個)的最大摘要浪費小于1 MB,只有32個會話的最大摘要浪費超過10 MB,最大約為60 MB 。

該圖的讀取應類似于以下示例:共有291個應用程序浪費了大于0.1MB但小于1MB的內存。

結論

將結果與分配的堆大小進行比較,我們得出的結論是,至少在將浪費定義為未使用的堆的情況下,問題還不夠大。 也使我們放棄這一方向的研究是碎片化–這種浪費通常散布在100多個不同的館藏中,從而使優化工作更加困難且更容易出錯。

這項特殊的研究沒有詳細說明動態增加底層陣列上的CPU開銷是否足夠大,這將是另一個故事。

參考: 在我們的JCG合作伙伴 Kairi Kangro的Java Collection Waste上,來自Plumbr Blog博客。

翻譯自: https://www.javacodegeeks.com/2014/01/on-java-collection-waste.html

總結

以上是生活随笔為你收集整理的关于Java垃圾收集的全部內容,希望文章能夠幫你解決所遇到的問題。

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