日誌分析
https://blog.csdn.net/brushli/article/details/78609816
內存結構模型
https://blog.csdn.net/qq_21383435/article/details/80702205
java需要通過棧上的reference數據來操作堆上的具體對象,目前主流有兩種方式:1.使用句柄 使用句柄的話,java堆將會劃分一塊內存來作爲句柄池,reference中存儲的就是對象的句柄地址,而句柄中包含了對象實例數據與對象類
##什麼是GC## GC(Garbage Collection),也就是垃圾收集,它可以實現內存的自動回收。一般認爲GC是專屬於java語言的一個東西,但事實上GC早於java出現,在1960年,Lisp是第一次使用了GC技術。別
目錄 一.類的加載順序 二.類的加載過程 三.類加載機制 類的加載過程,這是一個經常會被問到的面試題,11月11號去一家公司做了一套筆試題,裏面就有讓你寫出打印順序的。 一.類的加載順序 1.父類靜態變量 2.父類靜態代碼塊 3.子類靜態
引子 相信大家都遇到過這種場景,線上出故障了,但是關鍵代碼裏面忘記打日誌了,導致無法復現和準確定位問題。這時候可能需要重寫加上日誌,部署到服務器,但這第一耗時間,第二可能破壞現場,比如可能是線程池的問題呢?所以如果可以不重啓服務器
涉及技術: JVMTI ,javaagent,Attach API, Instrument ,Javassist JVMTI: JVM TI(JVM TOOL INTERFACE,JVM 工具接口)是 JVM 提供的一套對
1.安裝jvm-sandbox 2.引入依賴 <parent> <groupId>com.alibaba.jvm.sandbox</groupId> <artifactId>sandbox-module-start
p#### 一、運行時數據區-幀棧詳解 完整的Java虛擬機是由三部分組成的:類裝載子系統、運行時數據區(內存模型)、字節碼執行引擎。其中運行時數據區包含了堆、棧(線程)、本地方法棧、方法區(元空間)、程序計數器。
程序計數器: 1、較小的內存空間 2、看做當前線程所執行的字節碼的行號指示器,對比彙編語言 3、線程獨有4、如果線程正在執行一個java方法,計數器記錄的是正在執行的虛擬機字節碼指令地址5、如果執行的是nativ
JVM性能調優的經驗 整個堆大小=年輕代大小 + 年老代大小 + 持久代大小 -Xms : 最小可用內存 -Xmx : 最大可用內存 -Xmn(New Generation) : 年輕代大小 -XX:SurviorRatio=x : 設置
GC和GC Tuning 作者:馬士兵教育 http://mashibing.com GC的基礎知識 1.什麼是垃圾 C語言申請內存:malloc free C++: new delete c/C++ 手動回收內存 Java:
前不久我參加了一個國外程序員的講座,講座的副標題很有趣,叫做:“我如何學會停止恐懼,並且愛上 Java 虛擬機”。 這句話來自一部黑色幽默電影《奇愛博士》,電影描述了冷戰時期劍拔弩張的氛圍。 程序員之間的語言之爭又未嘗不是如此。寫系統語言
一、堆內存分配 Java技術體系中所提倡的自動內存管理最終可以歸結爲自動化地解決了兩個問題:給對象分配內存以及回收分配給對象的內存。 1.概述 內存分配策略: 對象優先在Eden分配 大對象直接進入老年代 長期存活的對象將進入老年
雙親委派 當一個類加載器去加載類時先嚐試讓父類加載器去加載,如果父類加載器加載不了再嘗試自身加載。這也是我們在自定義ClassLoader時java官方建議遵守的約定。 雙親委派模型能保證基礎類僅加載一次,不會讓jvm中存在重名的類。比如
查看 JVM GC 日誌 沒有一絲耽擱,老王立刻調出了線上GC日誌,在日誌裏,看到了一個“Metadata GC Threshold”的字樣,類似於如下日誌: 【Full GC(Metadata GC Threshold)xx
程序計數器是一塊較小的內存空間,它可以看做是當前線程所執行的字節碼的行號指示器,在虛擬機的概念模型裏,字節碼解析器工作時就是通過改變這個計數器的值來選取下一條需要執行的字節碼指令。分支,循環,跳轉,異常處理,線程恢復等基礎功能都需