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

歡迎訪問 生活随笔!

生活随笔

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

java

java 对象锁定_少锁定Java对象池

發布時間:2023/12/3 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 对象锁定_少锁定Java对象池 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java 對象鎖定

自從我寫任何東西以來已經有一段時間了,我一直在忙于我的新工作,其中涉及在性能調優方面做一些有趣的工作。 挑戰之一是減少應用程序關鍵部分的對象創建。

盡管Java隨著時間的推移已改進了GC算法,但垃圾回收打ic一直是Java的主要難題。 Azul是開發無暫停GC的市場領導者,但Azul JVM并非免費!

創建過多的臨時/垃圾對象并不能很好地工作,因為它為GC創建了工作,并且將對延遲產生負面影響。 過多的垃圾也不能在多核系統上正常工作,因為它會導致緩存污染。

那么我們應該如何解決呢?

垃圾少編碼

僅當您知道需要多少個對象并預先分配它們時,這才有可能,但是實際上很難找到。 但是即使您成功做到了,也必須擔心另一個問題

  • 您可能沒有足夠的內存來容納所需的所有對象
  • 您還必須處理并發

那么上述問題的解決方案是什么

有一種對象池設計模式可以解決以上兩個問題。 它使您可以指定池中所需的許多對象,并處理并發請求以服務所請求的對象。

對象池一直是許多具有低延遲要求的應用程序的基礎。 Flyweight設計模式是對象池的一種風格。

上面的兩種模式都將幫助我們避免創建對象。 太好了,因此現在減少了GC工作,并且理論上我們的應用程序性能應該得到改善。 實際上,不會那樣做,因為對象池/ Flyweight必須處理并發,并且由于并發問題而失去了避免對象創建而獲得的任何優勢。

處理并發的最常見方法是什么

對象池是一個典型的生產者/消費者問題,可以使用以下技術來解決:

同步:這是在JDK 1.5之前處理并發的唯一方法。 Apache編寫了一個基于同步的出色的對象池 API

鎖: Java在JDK 1.5之后增加了對并發編程的出色支持。 已經有一些使用鎖來開發對象池的工作,例如, furious-objectpool

無鎖:我找不到使用完全無鎖技術構建的任何實現,但是furious-objectpool使用ArrayBlocking隊列和ConcurrentLinked隊列的混合

衡量績效

在此測試中,我創建了一個包含100萬個對象的池,并且這些對象可以通過不同的池實現進行訪問,這些對象將從池中取出并返回到池中。

該測試首先從1個線程開始,然后增加線程數以衡量不同池在爭用情況下的執行情況

  • X軸–螺紋數
  • Y軸–以毫秒為單位的時間–越短的時間越好

該測試包括來自Apache的池,Furious池和基于ArrayBlocking的池

Apache的性能最差,并且隨著線程數量的增加,性能會進一步下降。 原因是Apache池基于大量使用“同步”

其他兩個(基于Furious和ArrayBlocking的池)的性能更好,但是隨著爭用的增加,它們兩者的速度也會降低。

當12個線程試圖訪問該池時,基于ArrayBlocking隊列的池對于100萬個項目大約需要1000毫秒。 內部使用Arrayblocking隊列的憤怒池大約需要1975 ms。

我必須進行更詳細的調查,以找出為什么Furious花費雙倍的時間,因為它也是基于ArrayBlocking隊列的。

數組阻塞隊列的性能不錯,但這是一種基于鎖定的方法。 如果可以實現無鎖池,我們將獲得哪種類型的性能?

鎖免費游泳池

實現無鎖池不是不可能的,但是有點困難,因為您必須處理多個生產者和消費者。

我將實現一個混合池,該池將在生產者端使用鎖定,而在消費者端使用非阻塞技術。

讓我們看一些數字

我使用新的實現(FastPool)進行了相同的測試,它比ArayBlocking隊列快了30%。

30%的改善還不錯,它絕對可以幫助我們實現延遲目標。

是什么讓快速池快速!

我使用了兩種技術來使其快速運行

  • 生產者是基于鎖的–使用鎖來管理多個生產者,這與“數組阻止”隊列相同,因此沒什么大不了的。
  • 立即發布已發布項目–在使用便宜的內存屏障釋放鎖之前,它會發布元素。 這會有所收獲
  • 消費者不受阻礙–使用CAS來實現這一目標,消費者永遠不會因生產者而受到阻礙。 數組阻止隊列阻止使用者,因為它對生產者和使用者使用相同的鎖
  • 線程局部以保持值的局部性–線程局部用于獲取最后使用的值,這在很大程度上減少了爭用。

如果您有興趣查看代碼,則可以使用@ FastObjectPool.java

參考:來自Are you ready博客的JCG合作伙伴 Ashkrit Sharma的Lockless Java Object Pool 。

翻譯自: https://www.javacodegeeks.com/2013/07/lock-less-java-object-pool.html

java 對象鎖定

總結

以上是生活随笔為你收集整理的java 对象锁定_少锁定Java对象池的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 91在线视频导航 | 欧美视频日韩视频 | 欧洲自拍偷拍 | 在线观看国产一区二区 | 精品久操| 国产三级在线看 | 国产一区二区三区视频免费在线观看 | 三级免费网址 | av综合久久 | 好吊一区二区三区视频 | 777四色| 欧美福利视频导航 | 久久精品亚洲a | 欧洲美女与动交ccoo | 久久久久九九九九 | av高清在线 | 欧美性猛交xxxx黑人 | 日本免费一区二区在线 | 国产91大片 | 久久久亚洲 | 色婷婷av一区二区三区软件 | 久久一区二区视频 | 久久精品黄aa片一区二区三区 | 99性趣网 | 日本调教电影 | 天天操妹子 | 一区二区三区中文字幕 | 亚洲人在线播放 | 欧美一级黄视频 | 久久久久无码精品国产 | 国产一区一区 | 美日韩av在线 | 日本一区欧美 | 日本一级黄色大片 | 久久精品视频9 | 欧美日韩一区二区三区不卡视频 | 久久亚州| 德国性经典xxxx性hd | 日韩精品xxxx | 超91在线 | 日韩一区二区免费播放 | 国产精品白嫩极品美女 | 无人在线观看高清视频 单曲 | 91网站在线免费看 | 18禁男女爽爽爽午夜网站免费 | 亚洲av电影一区二区 | 天天爽夜夜爽夜夜爽精品视频 | 黄色理论片 | 成人一区二区在线观看 | 葵司在线视频 | 日日好av | 欧美在线视频第一页 | 精品国产免费视频 | av在线片 | 深爱激情av | 911看片 | 日本美女性生活视频 | 午夜黄色福利 | 国产精品久久国产精品 | 男生操女生在线观看 | 亚洲av片不卡无码久久 | 国产无套精品 | 美景之屋电影免费高清完整韩剧 | 成人精品免费看 | 青青青视频免费观看 | 午夜精品久久久久久久99老熟妇 | 91精品999 | 91精品国产综合久久福利软件 | 亚洲一区自拍偷拍 | 男人与雌宠物交h | 日本三级中文字幕在线观看 | 欧美黑人又粗又大高潮喷水 | 国产强被迫伦姧在线观看无码 | 欧美日韩国产电影 | 日本999视频| 中文字幕一区二区三区av | 国产精品久久久久久久免费看 | 日本成人黄色片 | 婷婷二区 | 日本少妇激三级做爰在线 | 欧美日韩不卡 | 国产成人免费看一级大黄 | 亚洲69| 亚洲毛片一区二区 | 一级毛毛片 | www..com色| 女生喷水视频 | 欧美日a| 成人教育av | 干爹你真棒插曲mv在线观看 | 亚洲婷婷久久综合 | 午夜合集 | 精品人妻一区二区三区四区在线 | 91视频色版 | 欧美精品在线观看一区二区 | 黑人黄色录像 | 天堂中文网 | 色姑娘天天操 | 99精品欧美一区二区 |