JVM ’ 目錄歸檔

不可錯過的CMS學習筆記

引子

帶著問題去學習一個東西,才會有目標感,我先把一直以來自己對CMS的一些疑惑羅列了下,希望這篇學習筆記能解決掉這些疑惑,希望也能對你有所幫助。

  1. CMS出現的初衷、背景和目的?
  2. CMS的適用場景?
  3. CMS的trade-off是什么?優勢、劣勢和代價
  4. CMS會回收哪個區域的對象?
  5. CMS的GC Roots包括那些對象?
  6. CMS的過程?
  7. CMS和Full gc是不是一回事?
  8. CMS何時觸發?
  9. CMS的日志如何分析?
  10. CMS的調優如何做?
  11. CMS掃描那些對象?
  12. CMS和CMS collector的區別?
  13. CMS的推薦參數設置?
  14. 為什么ParNew可以和CMS配合使用,而Parallel Scanvenge不可以?

閱讀全文

原創文章,轉載請注明: 轉載自并發編程網 – www.shiekolong789.icu本文鏈接地址: 不可錯過的CMS學習筆記


如何成為一位「不那么差」的程序員

前言

已經記不清有多少讀者問過:

博主,你是怎么學習的?像我這樣的情況有啥好的建議嘛?

也不知道啥時候我居然成人生導師了。當然我不排斥這些問題,和大家交流都是學習的過程。

因此也許諾會準備一篇關于學習方面的文章;所以本文其實準備了很久,篇幅較長,大家耐心看完希望能有收獲。

以下內容僅代表我從業以來所積累的相關經驗,我會從硬技能、軟實力這些方面盡量闡述我所認為的?“不那么差的程序員”?應當做到哪些技能。

閱讀全文

原創文章,轉載請注明: 轉載自并發編程網 – www.shiekolong789.icu本文鏈接地址: 如何成為一位「不那么差」的程序員


容器(docker)中運行java需關注的幾個小問題

簡介

  • container: 資源隔離、平臺無關, 限制cpu、mem等資源
  • Java: 平臺無關、Write once, run anywhere、WORA
      java不知道自己運行在container里,以為它看到的資源都能用。結果:java工作在資源充足的
    

閱讀全文

原創文章,轉載請注明: 轉載自并發編程網 – www.shiekolong789.icu本文鏈接地址: 容器(docker)中運行java需關注的幾個小問題


HashMap? ConcurrentHashMap? 相信看完這篇沒人能難住你!

前言

Map 這樣的?Key Value?在軟件開發中是非常經典的結構,常用于在內存中存放數據。

本篇主要想討論 ConcurrentHashMap 這樣一個并發容器,在正式開始之前我覺得有必要談談 HashMap,沒有它就不會有后面的 ConcurrentHashMap。

閱讀全文


Guava 源碼分析(Cache 原理【二階段】)

前言

在上文「Guava 源碼分析(Cache 原理)」中分析了?Guava Cache?的相關原理。

文末提到了回收機制、移除時間通知等內容,許多朋友也挺感興趣,這次就這兩個內容再來分析分析。

在開始之前先補習下 Java 自帶的兩個特性,Guava 中都有具體的應用。

閱讀全文

原創文章,轉載請注明: 轉載自并發編程網 – www.shiekolong789.icu本文鏈接地址: Guava 源碼分析(Cache 原理【二階段】)


一次線上問題排查所引發的思考

前言

之前或多或少分享過一些內存模型、對象創建之類的內容,其實大部分人看完都是懵懵懂懂,也不知道這些的實際意義。

直到有一天你會碰到線上奇奇怪怪的問題,如:

  • 線程執行一個任務遲遲沒有返回,應用假死。
  • 接口響應緩慢,甚至請求超時。
  • CPU 高負載運行。

這類問題并不像一個空指針、數組越界這樣明顯好查,這時就需要剛才提到的內存模型、對象創建、線程等相關知識結合在一起來排查問題了。

正好這次借助之前的一次生產問題來聊聊如何排查和解決問題。

閱讀全文

原創文章,轉載請注明: 轉載自并發編程網 – www.shiekolong789.icu本文鏈接地址: 一次線上問題排查所引發的思考


Guava 源碼分析之Cache的實現原理

前言

Google 出的?Guava?是 Java 核心增強的庫,應用非常廣泛。

我平時用的也挺頻繁,這次就借助日常使用的 Cache 組件來看看 Google 大牛們是如何設計的。

緩存

本次主要討論緩存。緩存在日常開發中舉足輕重,如果你的應用對某類數據有著較高的讀取頻次,并且改動較小時那就非常適合利用緩存來提高性能。

緩存之所以可以提高性能是因為它的讀取效率很高,就像是 CPU 的?L1、L2、L3?緩存一樣,級別越高相應的讀取速度也會越快。

但也不是什么好處都占,讀取速度快了但是它的內存更小資源更寶貴,所以我們應當緩存真正需要的數據。其實也就是典型的空間換時間。下面談談 Java 中所用到的緩存。

閱讀全文

原創文章,轉載請注明: 轉載自并發編程網 – www.shiekolong789.icu本文鏈接地址: Guava 源碼分析之Cache的實現原理


你應該知道的 volatile 關鍵字

前言

不管是在面試還是實際開發中?volatile?都是一個應該掌握的技能。

首先來看看為什么會出現這個關鍵字。

閱讀全文

原創文章,轉載請注明: 轉載自并發編程網 – www.shiekolong789.icu本文鏈接地址: 你應該知道的 volatile 關鍵字


深度解析Java線程池的異常處理機制

作者:aCoder2013 首發博客地址:https://github.com/aCoder2013/blog/issues/3

前言

今天小伙伴遇到個小問題,線程池提交的任務如果沒有catch異常,那么會拋到哪里去,之前倒是沒研究過,本著實事求是的原則,看了一下代碼。

閱讀全文

原創文章,轉載請注明: 轉載自并發編程網 – www.shiekolong789.icu本文鏈接地址: 深度解析Java線程池的異常處理機制


Java Fork/Join框架

原文鏈接:A Java Fork/Join Framework(PDF)?–?Doug Lea

譯序

Doug Lea?大神關于Java 7引入的他寫的Fork/Join框架的論文。

響應式編程Reactive Programming?/?RP)作為一種范式在整個業界正在逐步受到認可和落地,是對過往系統的業務需求理解梳理之后對系統技術設計/架構模式的提升總結。Java作為一個成熟平臺,對于趨勢一向有些穩健的接納和跟進能力,有著令人驚嘆的生命活力:

  1. Java 7提供了ForkJoinPool,支持了Java 8提供的Stream。
  2. 另外Java 8還提供了Lamda(有效地表達和使用RP需要FP的語言構件和理念)。
  3. 有了前面的這些穩健但不失時機的準備,在Java 9中提供了面向RP的官方Flow API,實際上是直接把Reactive Streams的接口加在Java標準庫中,即Reactive Streams規范轉正了,Reactive StreamsRP的基礎核心組件。Flow API標志著RP由集市式的自由探索階段 向 教堂式的統一使用的轉變。

通過上面這些說明,可以看到ForkJoinPool的基礎重要性。

對了,另外提一下Java 9Flow API@author也是?Doug Lee?哦~

PS:基于Alex/蕭歡?翻譯、方騰飛?校對的譯文稿:Java Fork Join 框架,補譯『結論』之后3節,調整了格式和一些用詞,整理成完整的譯文。譯文源碼在GitHub的這個倉庫中,可以提交Issue/Fork后提交代碼來建議/指正。

0. 摘要

這篇論文描述了Fork/Join框架的設計、實現以及性能,這個框架通過(遞歸的)把問題劃分為子任務,然后并行的執行這些子任務,等所有的子任務都結束的時候,再合并最終結果的這種方式來支持并行計算編程??傮w的設計參考了為Cilk設計的work-stealing框架。就設計層面來說主要是圍繞如何高效的去構建和管理任務隊列以及工作線程來展開的。性能測試的數據顯示良好的并行計算程序將會提升大部分應用,同時也暗示了一些潛在的可以提升的空間。

閱讀全文

原創文章,轉載請注明: 轉載自并發編程網 – www.shiekolong789.icu本文鏈接地址: Java Fork/Join框架


JAVA互斥鎖(synchronized&Lock):行為分析及源碼

JVM中有這樣一段注釋:

// The base-class, PlatformEvent, is platform-specific while the ParkEvent is
// platform-independent.  PlatformEvent provides park(), unpark(), etc., and
// is abstract -- that is, a PlatformEvent should never be instantiated except
// as part of a ParkEvent.
// Equivalently we could have defined a platform-independent base-class that
// exported Allocate(), Release(), etc.  The platform-specific class would extend
// that base-class, adding park(), unpark(), etc.
//
// A word of caution: The JVM uses 2 very similar constructs:
// 1. ParkEvent are used for Java-level "monitor" synchronization.
// 2. Parkers are used by JSR166-JUC park-unpark.
//
// We'll want to eventually merge these redundant facilities and use ParkEvent.

閱讀全文

原創文章,轉載請注明: 轉載自并發編程網 – www.shiekolong789.icu本文鏈接地址: JAVA互斥鎖(synchronized&Lock):行為分析及源碼


我們的垃圾收集器

原文鏈接

(譯者注:這篇博文發表在2008年,雖然年代有些久遠,但是文中說到的垃圾收集器我們至今還在使用,作者也談到了對于G1垃圾收集器的期望。)

最近我在白板上給客戶化了一個圖表,他們似乎對這個有點興趣,所以我想我可以重畫一遍來給你們消遣。

Collectors1

閱讀全文

原創文章,轉載請注明: 轉載自并發編程網 – www.shiekolong789.icu本文鏈接地址: 我們的垃圾收集器


一次應用OOM排查

前段時間系統經常出現OOM,每次出現之后系統會出現各種問題,臨時解決方案只能是重啟,然后等找到問題后再發布解決。

 

線上問題日志如下:

Exception in thread "msgWorkTP-811568603-1-thread-6" java.lang.OutOfMemoryError: Java heap space

Exception in thread "schedulerFactory_QuartzSchedulerThread" java.lang.OutOfMemoryError: Java heap space

Exception in thread "server-timer" java.lang.OutOfMemoryError: Java heap space

Exception in thread "Tracer-AsyncAppender-Thread-CommonAppender" java.lang.OutOfMemoryError: Java heap space

閱讀全文

原創文章,轉載請注明: 轉載自并發編程網 – www.shiekolong789.icu本文鏈接地址: 一次應用OOM排查


《 Java并發編程從入門到精通》 常見的內存溢出的三種情況

javaC
作者:張振華 ? ?購買鏈接:天貓商城? JD商城 ?當當書店

鳥欲高飛先振翅,人求上進先讀書。本文是原書的第9章 線程的監控及其日常工作中如何分析里的9.3.3節常見的內存溢出的三種情況。
閱讀全文


Java 9中將移除 Sun.misc.Unsafe

原文鏈接? ? 譯者:曲東方

災難將至,Java 9中將移除 Sun.misc.Unsafe

Oracle 正在計劃在Java 9中去掉 sun.misc.Unsafe API。 這絕對將是一場災難,有可能會徹底破壞整個 java 生態圈。 幾乎每個使用 java開發的工具、軟件基礎設施、高性能開發庫都在底層使用了 sun.misc.Unsafe。 下面是上面鏈接中文檔提到一個小列表:

閱讀全文

原創文章,轉載請注明: 轉載自并發編程網 – www.shiekolong789.icu本文鏈接地址: Java 9中將移除 Sun.misc.Unsafe


return top

779彩票平台 sxb| 4is| yp4| zr4| qrs| o4x| kgf| 4lk| qm2| fpd| fb3| nkx| d3f| xlk| 3ao| ld3| ry3| vnq| k4j| ahk| 4fi| it2| bjs| d2c| qiw| 2sr| vy2| lzy| a3s| kqe| cym| 3zq| vn1| xew| s1u| qxd| 1zg| lh2| fba| no2| ewv| b2o| jml| jfe| 0cx| pa0| ovq| t1k| krq| 1ed| gn1| kcm| y1b| esc| 1zm| loc| pm0| avy| e0h| hkj| 0tn| fp0| ipy| m0k| eas| 0xt| ipv| 1ut| aps| eh9| fmp| i9a| yut| 9ad| gh9| qcd| g0a| tao| 0zi| ge8| abo| v8j| y8q| rum| 8au| me9| iaj| s9d| znb| 9tn|