原创 JVM的動態agent機制:在main函數啓動之後運行agent 原

premain是Java SE5開始就提供的代理方式,由於其必須在命令行指定代理jar,並且代理類必須在main方法前啓動。因此,要求開發者在應用前就必須確認代理的處理邏輯和參數內容等等。在有些場合下,premain代理方式不能滿足需求。爲

原创 java對象內存佈局 原

我們知道在Java中基本數據類型的大小,例如int類型佔4個字節、long類型佔8個字節,那麼Integer對象和Long對象會佔用多少內存呢?本文介紹一下Java對象在堆中的內存結構以及對象大小的計算。 對象的內存佈局 一個Java對象

原创 深入理解Java Class文件格式(六) 原

經過前幾篇文章, 終於將常量池介紹完了, 之所以花這麼大的功夫介紹常量池, 是因爲對於理解class文件格式,常量池是必須要了解的, 因爲class文件中其他地方,大量引用了常量池中的數據項。  對於還不瞭解常量池的讀者, 如果想要深入瞭解

原创 深入理解Java Class文件格式(五) 原

(8) CONSTANT_Class_info 常量池中的一個CONSTANT_Class_info, 可以看做是CONSTANT_Class數據類型的一個實例。 他是對類或者接口的符號引用。 它描述的可以是當前類型的信息, 也可以描述對當

原创 線程安全(上)--徹底搞懂synchronized(從偏向鎖到重量級鎖) 原

接觸過線程安全的同學想必都使用過synchronized這個關鍵字,在java同步代碼快中,synchronized的使用方式無非有兩個: 通過對一個對象進行加鎖來實現同步,如下面代碼。 synchronized(lockObjec

原创 Class文件格式總結(十) 原

到此, 所有關於class文件格式的重要內容都已經講解完了, 不敢說面面俱到, 但是敢說大部分重要的內容都包含在內了。前前後後用了9篇博客來專門講解class文件結構, 爲什麼花那麼多的時間和精力來介紹class文件呢? 簡而言之,因爲它很

原创 深入理解Java Class文件格式(七) 原

本專欄列前面的一系列博客, 對Class文件中的一部分數據項進行了介紹。 本文將會繼續介紹class文件中未講解的信息。 先回顧一下上面一篇文章。 在上一篇博客中, 我們介紹了: this_class    對當前類的描述 super_cl

原创 java Btrace使用 原

背景 記得前幾天有人問我:在生產環境中可能經常遇到各種問題,你們一般是如何進行調試的? 很慚愧,沒有經驗。因爲平時碰不到生產環境的服務器,定位問題需要各種數據,所以大多數問題的解決方式都是在本地打斷點進行調試,或者在測試環境利用輸出日誌進

原创 Zero-Copy、MMap 原

有一個很常見的場景,比如需要將文件從磁盤上原封不動地發送到網絡的另一端。這通過代碼實現起來很簡單:對於Java而言,你可以使用InputStream的某個實現類將文件一塊塊地讀取到小的緩衝區(通常我們都將緩衝區大小設置爲8KB),然後再將緩

原创 VirtualMachine所支持的操作 原

在JDK中com.sun.tools.attach.VirtualMachine提供了一些從外部進程attach到jvm上,並執行一些操作的功能。VirtualMachine的子類HotSpotVirtualMachine表示hotspot

原创 深入理解Java Class文件格式(四) 原

(3)CONSTANT_Integer_info 一個常量池中的CONSTANT_Integer_info數據項, 可以看做是CONSTANT_Integer類型的一個實例。 它存儲的是源文件中出現的int型數據的值。 同樣, 作爲常量池中

原创 Java多線程之鎖優化策略 原

鎖的優化策略     編碼過程中可採取的鎖優化的思路有以下幾種:     1:減少鎖持有時間           例如:對一個方法加鎖,不如對方法中需要同步的幾行代碼加鎖;     2:減小鎖粒度         例如:Concurrent

原创 深入理解Java Class文件格式(九) 原

經過前八篇關於class文件的博客, 關於class文件格式的內容也基本上講完了。 本文是關於class文件格式的最後一篇。 在這篇博客中, 將會講解關於方法的幾個屬性。 理解這篇博客的內容, 對於理解JVM執行引擎起着重要作用。 關於虛擬

原创 深入理解Java Class文件格式(三) 原

常量池中各數據項類型詳解 關於常量池的大概內容, 已經在 深入理解Java Class文件格式(一) 中講解過了, 這篇文章中還介紹了常量池中的11種數據類型。 本文的任務是詳細講解這11種數據類型, 深度剖析源文件中的各種信息是以什麼方

原创 scala學習筆記1-泛型、界定、形變、this.type、複合類型、抽象類型 原

一、Scala中的泛型 class Triple[F: ClassTag, S : ClassTag, T : ClassTag](val f : F, val s : S, val t :T)  <span style="font-fam