原创 G1 GC 全稱Garbage-First Garbage Collector 的全面全方位總結
關鍵描述 G1是一種服務器端的垃圾收集器,應用在多處理器和大內存環境中,在實現高吞吐量的同時,儘可能的滿足垃圾收集暫停時間的要求,全堆操作(例如全局標記)與應用程序線程並行執行。這樣可以防止與堆或活動數據大小成比例的中斷。
原创 什麼是消息隊列(what MQ) why:解耦、異步、削峯、限流;MQ的問題
一、什麼是消息隊列? 消息隊列不知道大家看到這個詞的時候,會不會覺得它是一個比較高端的技術,反正我是覺得它好像是挺牛逼的。 消息隊列,一般我們會簡稱它爲MQ(Message Queue),嗯,就是很直白的簡寫。 我們先不管消息(Mes
原创 Java 線程池之 四個拒絕策略
jdk中關於線程池的拒絕策略的接口的實現,暫時就四個,如下: AbortPolicy -- 當任務添加到線程池中被拒絕時,它將拋出 RejectedExecutionException 異常。 CallerRunsPoli
原创 G1 GC 全稱 Garbage-First Garbage Collector
介紹 Oracle JDK 7.4或更高版本完全支持Garbage-First(G1)垃圾收集器。G1收集器是server-style的垃圾收集器,適用於具有大內存的多處理器計算機。它極有可能滿足垃圾回收(GC)暫停時間目標,同時實現高吞
原创 Java 內存分區之什麼是 CCS區 Compressed Class Space 類壓縮空間
瞭解到什麼是ccs區,一般都是實際執行了jstat -gc 之後,看Java堆的gc相關的幾個分區的gc信息,前面的s0,s1,e區,o區,還好猜,研究過分區的,不難猜出來這個分區是啥意思,M區雖然不知道是Metaspace元空間,但是錯
原创 Java 內存分區之 堆外內存 Metaspace 元空間 取永久代PermGen 而代之
在稍微瞭解Java內存分區的時候,大多數文章都是出自深入理解jvm這本書,上來就是給你分了 程序計數器,Java虛擬機棧,本地方法棧,堆,方法區,還有個直接內存,還說方法區裏面有個常量池。在寫這本書的時候,jdk還在1.6,但是現在202
原创 concurrent and parallel phases 併發和並行的區別
在看g1gc文章的時候,把concurrent and parallel phases翻譯成併發和並行階段,感覺這2個詞不是一個意思嗎?爲啥他原始文檔要強調這2個詞呢。深究一下,果然不是一個意思。 總體概念: 在單CPU系統中,系統調度在
原创 Java 之 jstack的使用:Java棧追蹤工具
jstack命令打印指定Java進程、核心文件或遠程調試服務器的Java線程的Java 棧跟蹤。對於每個Java框架,將打印完整的類名、方法名、字節碼索引(BCI)和行號(如果可用)。使用-m選項,jstack命令使用程序計數器(PC)打
原创 Java 併發之內存模型的重排序的Java代碼實例分析
一般在看JMM(Java內存模型)的時候,裏面有代碼會因爲種種原因優化,導致指令重排。也沒實際見過。也沒法驗證這個說法。 說是volatile這個關鍵詞可以1,禁止指令重排,2,內存可見。這都是理論,回頭就忘記了。 下面用實際例子,切身體
原创 elastic search 查詢2個字段值的差 大於某個值,再帶點查詢條件的語句
語句如下: { "from":0, "size":10, "query":{ "bool":{ "must":[ {
原创 build.gradle 獲取 git 版本號 獲取當前時間 自定義jar的名字
以前這個gradle都是給Android使用的,萬萬沒想到,Java的其它項目也能使用,甚至能替代maven或者說maven和gradle項目是可以互相轉換的。還有就是在使用svn來管理項目的時候,每個svn版本都對應一個數字,但是換了g
原创 Java 多線程-synchronized用法和實現原理
造成線程安全問題的主要原因有兩點,一是存在共享數據(也稱臨界資源),二是存在多條線程共同操作共享數據。 當存在多個線程操作共享數據時,需要保證同一時刻有且只有一個線程在操作共享數據,其他線程必須等到該線程處理完數據後再進行,這種方式有個高
原创 Java之jstat的用法:Java虛擬機 統計信息查看 工具
全稱“Java Virtual Machine statistics monitoring tool”(statistics 統計;monitoring 監控;tool 工具) 用於監控虛擬機的各種運行狀態信息的命令行工具。 可以查看虛擬
原创 G1 GC 調優學習 瞭解有關如何調整和調整G1 GC以進行評估,分析和性能的信息。
G1 GC是Java HotSpot虛擬機的低暫停,服務器風格的分代垃圾收集器。G1 GC使用併發(concurrent)和並行(parallel)階段來實現其目標暫停時間並保持良好的吞吐量。當G1 GC確定需要進行垃圾收集時,它將首先
原创 maven 項目pom.xml中獲取git 信息--git-commit-id-plugin 插件
使用maven項目+git來管理項目,現在想在發版的時候,知道包實際使用的git記錄的版本號。 <plugin> <groupId>pl.project13.maven</groupId>