原创 Java 字符串常量池到底是在PermGen方法區、是在heap堆裏面、還是在Metaspace 元空間裏面呢?

要是沒有實踐過別人書本上的理論的話,就還是會說常量池在方法區裏面,要是知道方法區已經隨jdk升級,被逐步幹掉的話,額,也不能說被幹掉,只是被優化了,這又體現了看書的程度深淺了,就會看到有的文章說常量池移動到heap堆裏面了,還有極少的說移

原创 Java之jinfo的用法:Java配置信息查看工具

實時查看和跳轉jvm的各項參數。 使用jps -v 可以查看虛擬機啓動時,顯示指定的參數列表,但是未指定的系統默認的參數就看不到了。 就可以使用jinfo -flag 進行查看。        jinfo [ option ] pid  

原创 -xms和-xmx設置完之後,堆的大小就真的是設置的大小嗎?

前面看了jdk的幾個查看jvm信息的命令,然後只看不動手,不用回頭就忘記的乾乾淨淨了。還是實際使用一下,然後順便結合着jvm的內存分區,再深層次的記錄一下幾個分區的名稱、大小、gc器、等等。 首先,查看一個進程,篩選一個進程,就可以使用j

原创 Java 之 jps的用法:Java虛擬機進程狀況工具

虛擬機性能監控與故障處理工具 JDK 命令行工具 (1)jps:Java虛擬機進程狀況工具 一般現場出問題,服務器上不會有JProfile之類的工具給你分析問題,有的只是jdk自帶的東西,所以,很有必要學習一下jdl自帶的命令行工具。一開

原创 Java IPv6 轉 long 數組的實現

IP6是128位的長度,一個long是64位的長度,2個long正好夠一個IP6的長度位數。 代碼如下: /** * 將 IPv6 地址轉爲 long 數組,只支持冒分十六進制表示法 */ publi

原创 Java jvm 之各種參數及表達的意思

        內存相關設置         -Xms:初始堆(Heap)大小         -Xmx:最大堆(Heap)大小         -Xmn:堆裏面young區的大小新生代大小,Oracle建議設置爲整個堆大小的1/4到1/

原创 Java 代碼 各種不規範示範,希望引以爲戒,望看到的大哥們 都能把代碼寫的規範點,方便你我他。

前言:         總結,開發過程中的各種好習慣,不僅僅是寫代碼的時候,還有各種其他情況。都可以做的好一點。 一,代碼各種規範優化 案例1(你猜) 這段代碼暫時有如下三個問題: 1,代碼註釋不規範:類註釋,變量註釋,屬性註釋的格式都

原创 Java之jmap的用法:Java 內存映像工具 jmap -heap pid

jmap [option] <pid> 關於 option 的選項,有下面這麼幾個 1,jmap -dump:[live,] format=b, file=filename  pid jmap -F -dump:format=b,fi

原创 JDK 命令行工具 (一)jps:Java虛擬機進程狀況工具

虛擬機性能監控與故障處理工具 JDK 命令行工具 (1)jps:Java虛擬機進程狀況工具 一般現場出問題,服務器上不會有JProfile之類的工具給你分析問題,有的只是jdk自帶的東西,所以,很有必要學習一下jdl自帶的命令行工具。一開

原创 Java 併發框架中的線程池 thread pool 爲啥不是直接創建 maximumPoolSize 個線程之後,再把任務丟到隊列中?

在開發過程中,合理使用線程池,可以有以下好處。 1,降低資源消耗;提高線程到重發利用率,降低創建和銷燬線程的消耗。 2,提高響應速度;任務來了,直接有線程可用可執行,而不是先創建線程,再執行。 3,提高線程的可管理性;線程是稀缺資源,使用

原创 用戶態和核心態的區別

1.操作系統需要兩種CPU狀態: 內核態(Kernel Mode):運行操作系統程序 用戶態(User Mode):運行用戶程序 2.指令劃分: 特權指令:只能由操作系統使用、用戶程序不能使用的指令。  舉例:啓動I/O   內存清零 

原创 Java synchronized 原理總結 詳細闡述 無鎖to偏向鎖to輕量級鎖to重量級鎖的轉變過程,不虛此行。

鎖的內存語義 synchronized的底層是使用操作系統的mutex lock實現的。 內存可見性:同步塊的可見性是由“如果對一個變量執行lock操作,將會清空工作內存中此變量的值,在執行引擎使用這個變量前需要重新執行load或assi

原创 Java 內存模型 (JMM)總結

Java內存模型(JMM) 我們常說的JVM內存模式指的是JVM的內存分區;而Java內存模式是一種虛擬機規範。 Java虛擬機規範中定義了Java內存模型(Java Memory Model,JMM),用於屏蔽掉各種硬件和操作系統的內

原创 IntelliJ IDEA 中 Git 修改服務器地址的方法

git服務器換地址之後,本地代碼不動,改改git的地址,就把服務器由a換到b了 remotes:遠程;遙控器,,,翻譯出來的意思 修改項目的服務器地址,之後就和新的git服務器地址關聯了。 再更新的時候,需要再次驗證一下賬號密碼,就O

原创 Java 多線程 interrupt - 線程的中斷

正如中斷二字所表達的意義,在線程運行(run方法)中間打斷它,在Java中,提供了以下3個有關線程中斷的方法 //中斷線程(實例方法) public void Thread.interrupt(); //判斷線程是否被中斷(實例方法)