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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

arraylist内存溢出_ArrayList使用内存映射文件

發布時間:2023/12/3 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 arraylist内存溢出_ArrayList使用内存映射文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

arraylist內存溢出

介紹

內存中的計算由于負擔得起的硬件而開始興起,大多數數據保留在RAM中以滿足延遲和吞吐量的目標,但是將數據保留在RAM中會增加垃圾收集器的開銷,尤其是在您不預先分配內存的情況下。 因此,有效地我們需要一種無垃圾/無垃圾的方法來避免GC打ic

無垃圾/無垃圾數據結構

有幾種選擇可以實現它

對象池

對象池模式是一個很好的解決方案,我在Lock Less Object Pool博客中寫道

堆外對象

JVM對創建脫機對象具有很好的支持。 如果您走這條高速公路,并且高速公路有其自身的風險,您可以擺脫GC暫停!

就像世界上最好的一樣,這是堆與堆的混合。

內存映射文件將允許映射內存中的部分數據,并且該內存將由OS管理,因此它將在正在映射文件的JVM進程中創建非常少的內存開銷。 這可以幫助以無垃圾方式管理數據,并且您可以讓JVM管理大型數據。 內存映射文件可用于開發IPC,我在Power-of-java-memorymapped-file博客中寫道。 在此博客中,我將創建由MemoryMapped File備份的ArrayList,此陣列列表可以存儲數百萬個對象,幾乎沒有GC開銷。 聽起來很瘋狂,但有可能。

讓我們行動起來

在此測試中,我使用具有以下屬性的Instrument對象

–整數ID

–雙倍價格

因此,每個對象都是12個字節。 這個新的數組列表包含1000萬個對象,我將嘗試評估寫入器/讀取器的性能

作家表現


X軸 –沒有讀數
Y軸 –以毫秒為單位增加一千萬的時間

添加1000萬個元素大約需要70毫秒,這非常快。

作家吞吐量

讓我們看一下性能的另一個方面,即吞吐量:


X軸 –沒有讀數
Y軸 –吞吐量/秒,百萬

作家吞吐量令人印象深刻,我的范圍介于1.38億到1.42億之間

讀者表現


X軸 –沒有讀數
Y軸 –讀取1000萬以毫秒為單位的時間

讀取1000萬條記錄大約需要44毫秒,非常快。 憑借這種性能,您肯定會挑戰數據庫。
讀者吞吐量


X軸 –沒有讀數
Y軸 –吞吐量/秒,百萬

哇吞吐量很棒,每秒220+百萬

以1.38億/秒的寫入器吞吐率和2.2億/秒的讀取器吞吐率看似非常有前途。

與數組列表比較

讓我們比較BigArrayList和ArrayList的性能,

作家吞吐量– BigArrayList與ArrayList


BigArrayList的吞吐量幾乎恒定在1.38億/秒左右, ArrayList以5000萬 /秒開始,跌落到500萬以下。

ArrayList有很多問題,這是由于

–陣列分配

–陣列復制

–垃圾收集開銷

在這種情況下, BigArrayList是贏家,它比arraylist快7倍 。

讀取器吞吐量– BigArrayList與ArrayList


ArrayList的性能比BigArrayList更好,大約快1倍。

在這種情況下,BigArrayList速度較慢,因為

–隨著請求更多數據,它必須將映射文件保留在內存中

–取消封送的成本

BigArrayList的讀取器吞吐量為220+百萬/秒,仍然非常快,只有很少的應用程序想要比這更快的處理消息。

因此,對于大多數用例來說,這應該可行。

使用以下技術可以提高閱讀器性能

–從映射的流中批量讀取消息

–通過使用索引來預取消息,就像CPU一樣

通過進行上述更改,我們可以將性能提高幾百萬美元,但是我認為,在大多數情況下,當前的性能還是不錯的

結論

內存映射文件是值得研究的領域,它可以解決許多性能問題。 Java現在正被用于開發交易應用程序,GC從一開始就是您必須回答的一個問題,您需要找到一種使GC保持快樂的方法,而MemoryMapped是GC會喜歡的一件事。

該博客使用的代碼可在@GitHub上獲得 ,我使用2gb內存進行了測試。 代碼不能處理某些極端情況,但足以證明MemoryMapped文件在許多情況下都能勝出。

參考:來自我們的JCG合作伙伴 Ashkrit Sharma的使用內存映射文件的ArrayList ,在Are you ready博客上。

翻譯自: https://www.javacodegeeks.com/2013/07/arraylist-using-memory-mapped-file.html

arraylist內存溢出

總結

以上是生活随笔為你收集整理的arraylist内存溢出_ArrayList使用内存映射文件的全部內容,希望文章能夠幫你解決所遇到的問題。

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