原创 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>