目錄 1.方法區內存大小設置 2.如何解決OOM問題?(了解) 1.方法區內存大小設置 1.方法區的大小可以不是固定的,JVM可以根據應用需要自動調整。a)JDK7及以前(了解):-XX:PermSize設置永久代初始大小。-XX ...
JVM加載類的時候,需要記錄類的元數據,這些數據會保存在一個單獨的內存區域內,在Java 里,這個空間被稱為永久代 Permgen ,在Java 里,使用元空間 Metaspace 代替了永久代。永久代和元空間保存的數據並不完全一樣,永久代中還保存另一些與類的元數據無關的雜項。 如我們之前的一篇文章 :字符串對象在JVM中是如何存放的中說的,在Java 里將字符串常量從永久代移動到了堆區域,但是 ...
2019-10-04 21:46 0 1398 推薦指數:
目錄 1.方法區內存大小設置 2.如何解決OOM問題?(了解) 1.方法區內存大小設置 1.方法區的大小可以不是固定的,JVM可以根據應用需要自動調整。a)JDK7及以前(了解):-XX:PermSize設置永久代初始大小。-XX ...
前言 昨天謝照東大神在群里提出一個問題:怎么查看Metaspace里具體包含的是什么,起因是他的某個服務設置了-XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m,但是通過jstat -gcutil pid查看M的值為98(M ...
要分析JVM的源碼,結合資料直接閱讀是一種方式,但是遇到一些想不通的場景,必須要結合調試,查看執行路徑以及參數具體的值,才能搞得明白。所以我們先來把JVM的源碼進行編譯,並能夠使用GDB進行調試。 編譯環境 本文使用的JDK版本:OpenJDK7,分支b147 下載頁面:https ...
原創申明:本文由公眾號【猿燈塔】原創,轉載請說明出處標注 “365篇原創計划”第十四篇。 今天呢!燈塔君跟大家講: JVM源碼分析之JVM啟動流程 前言: 執行Java類的main方法,程序就能運行起來,main方法的背后,虛擬機究竟發生了什么?如果你對這個感興趣 ...
“365篇原創計划”第十二篇。 今天呢!燈塔君跟大家講: JVM源碼分析之synchronized實現 java內部鎖synchronized的出現,為多線程的並發執行提供了一個穩定的環境,有效的防止多個線程 ...
原創申明:本文由公眾號【猿燈塔】原創,轉載請說明出處標注 “365篇原創計划”第十一篇。 今天呢!燈塔君跟大家講: JVM源碼分析之Java對象頭實現 HotSpot虛擬機中,對象在內存中 ...
JVM源碼分析之SystemGC完全解讀 概述 JVM的GC一般情況下是JVM本身根據一定的條件觸發的,不過我們還是可以做一些人為的觸發,比如通過jvmti做強制GC,通過System.gc觸發,還可以通過jmap來觸發等,針對每個場景其實我們都可以寫篇文章來做一個介紹,本文重點介紹下 ...
前言 什么是 CAS Java 中的 CAS JVM 中的 CAS 前言 在上一篇文章中,我們完成了源碼的編譯和調試環境的搭建。 鑒於 CAS 的實現原理比較簡單, 然而很多人對它不夠了解,所以本篇將從 CAS 入手,首先介紹 ...