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