close

堆內內存還是堆外內存?

隨著深度學習在圖像識別、語音識別及其他感知智能領域大放異彩,人們對深度學習在自然語言處理(NLP) 的價值也寄予瞭厚望。再加上 AlphaGo 的成功,人工智能的自然語言研究和應用變得炙手可熱。NLP 作為人工智能領域的認知智能,成為目前大傢關註的焦點。




隨著深度學習在圖像識別、語音識別及其他感知智能領域大放異彩,人們對深度學習在自然語言處理(NLP) 的價值也寄予瞭厚望。再加上 AlphaGo 的成功,人工智能的自然語言研究和應用變得炙手可熱。NLP 作為人工智能領域的認知智能,成為目前大傢關註的焦點。

台中靜電油煙機出租


在本文中,我們將會深入研究主數據管理場景中微服務架構的適用情況,並且會分析在問題域中,如果需要計算密集型的任務,基於微服務的架構所面臨的挑戰,比如在計算無擔保消費信貸組合的預期損失的時候。




前幾天讀瞭醫療器械公司WellVia的CTO Peyton Reaves寫的一篇文章,文中對列舉瞭優秀CTO應該具備的7個品質,包括敏銳的商業頭腦、新趨勢和新技術的持續評估、豐富的技術背景、聚焦企業文化、組織團隊建設和擔任導師,他認為具備這7項品質,對於構建團隊的長期願景和方向有重要的作用。今天我想就他提出的這7項品質,結合我自己經歷、看見、聽見的故事,和大傢分享經驗。




從構建階段到傳輸至生產運行階段,容器在每個階段都面臨著安全風險。容器防護需要在整個棧及部署過程中引入一種分層安全策略。




一般情況下,Java中分配的非空對象都是由Java虛擬機的垃圾收集器管理的,也稱為堆內內存(on-heap memory)。虛擬機會定期對垃圾內存進行回收,在某些特定的時間點,它會進行一次徹底的回收(full gc)。徹底回收時,垃圾收集器會對所有分配的堆內內存進行完整的掃描,這意味著一個重要的事實——這樣一次垃圾收集對Java應用造成的影響,跟堆的大小是成正比的。過大的堆會影響Java應用的性能。

對於這個問題,一種解決方案就是使用堆外內存(off-heap memory)。堆外內存意味著把內存對象分配在Java虛擬機的堆以外的內存,這些內存直接受操作系統管理(而不是虛擬機)。這樣做的結果就是能保持一個較小的堆,以減少垃圾收集對應用的影響。

但是Java本身也在不斷對堆內內存的實現方式做改進。兩者各有什麼優缺點?Vanilla Java博客作者Peter Lawrey撰寫瞭一篇文章,在文中他對三種方式:用new來分配對象、對象池(object pool)和堆外內存,進行瞭詳細的分析。

用new來分配對象內存是最基本的一種方式,Lawery提到:


在Java 5.0之前,分配對象的代價很大,以至於大傢都使用內存池。但是從5.0開始,對象分配和垃圾回收變得快多瞭,研發人員發現瞭性能的提升,紛紛簡化他們的代碼,不再使用內存池,而直接用new來分配對象。從5.0開始,隻有一些分配代價較大的對象,比如線程、套接字和數據庫鏈接,用內存池才會有明顯的性能提升。


對於內存池,Lawery認為它主要用於兩類對象。第一類是生命周期較短,且結構簡單的對象,在內存池中重復利用這些對象能增加CPU緩存的命中率,從而提高性能。第二種情況是加載含有大量重復對象的大片數據,此時使用內存池能減少垃圾回收的時間。對此,Lawery還以StringInterner為例進行瞭說明。

最後Lawery分析瞭堆外內存,它和內存池一樣,也能縮短垃圾回收時間,但是它適用的對象和內存池完全相反。內存池往往適用於生命期較短的可變對象,而生命期中等或較長的對象,正是堆外內存要解決的。堆外內存有以下特點:


當然堆外內存也有它自己的問題,最大的問題就是你的數據結構變得不那麼直觀,如果數據結構比較復雜,就要對它進行串行化(serialization),而串行化本身也會影響性能。另一個問題是由於你可以使用更大的內存,你可能開始擔心虛擬內存(即硬盤)的速度對你的影響瞭。

Lawery還介紹瞭OpenHFT公司提供三個開源庫:Ch台北靜電機租賃ronicle Queue、Chronicle Map和Thread Affinity,這些庫可以幫助開發人員使用堆外內存來保存數據。采用堆外內存有很多好處,同時也帶來挑戰,對堆外內存感興趣的讀者可以閱讀Lawery的原文來瞭解更多信息。

感謝郭蕾對本文的油煙靜電機租賃審校。

給InfoQ中文站投稿或者參與內容翻譯工作,請郵件至editors@cn.infoq.com。也歡迎大傢通過新浪微博(@InfoQ)或者騰訊微博(@InfoQ)關註我們,並與我們的編輯和其他讀者朋友交流。


您需要 註冊一個InfoQ賬號 或者

登錄 才能進行評論。在您完成註冊後還需要進行一些設置。

獲得來自InfoQ的更多體驗。






我們發現您在使用ad blocker。

我們理解您使用ad blocker的初衷,但為瞭保證InfoQ能夠繼續以免費方式為您服務,我們需要您的支持。InfoQ絕不會在未經您許可的情況下將您的數據提供給第三方。我們僅將其用於向讀者發送相關廣告內容。請您將InfoQ添加至白名單,感謝您的理解與支持。

台灣電動床工廠 電動床

台灣電動床工廠 電動床

AUGI SPORTS|重機車靴|重機車靴推薦|重機專用車靴|重機防摔鞋|重機防摔鞋推薦|重機防摔鞋

AUGI SPORTS|augisports|racing boots|urban boots|motorcycle boots

arrow
arrow

    nqgmweac68 發表在 痞客邦 留言(0) 人氣()