日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java JVM总结

發布時間:2023/12/3 java 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java JVM总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、jvm參數

1)內存

-Xms

-Xmx

-Xss

-Xloggc:file

-Xprof

-XX:+DisabledExplicitGC

-XX:PreBlockSpin

-XX:CompileThreshold

2)Parallel

-XX:SurvivorRatio
-XX:PreTenureSizeThreshold
-XX:MaxTenuringThreshold
-XX:+ParallelGCThreads
-XX:+UseAdaptiveSizePolicy

3)CMS

-XX:+UseConcMarkSweepGC

-XX:MaxTenuringThreshold

-XX:ParallelCMSThreads

-XX:CMSInitiatingOccupancyFraction

-XX:+UseCMSCompactAtFullCollection

-XX:CMSFullGCsBeforeCompaction

-XX:+CMSClassUnloadingEnabled

-XX:CMSInitiatingPermOccupancyFraction

-XX:GCTimeRatio

-XX:MaxGCPauseMillis

4)G1

-XX:+UseG1GC

-XX:MaxGCPauseMillis

-XX:GCPauseIntervalMillis

-XX:+G1HeapRegionSize

-XX:G1NewSizePercent

-XX:G1MaxNewSizePercent

-XX:GCTimeRatio

-XX:ConcGCThreads

-XX:InitiatingHeapOccupancyPercent

二、內存模型

(1)運行時數據區

程序計數器

Java 虛擬機棧

本地方法棧

Java 堆

方法區

(2)對象內存分配

1)內存分配方式

指針碰撞、空閑列表

2)內存分配策略

優先在 Eden 區分配、大對象直接進入老年代、長期存活對象將進入老年代

3)內存分配空間

1.棧分配

技術:逃逸分析、標量替換

缺點:無法棧上分配共享的對象?

2.TLAB

優點:盡量避免從堆上直接分配內存從而避免頻繁的鎖爭用

缺點:有內存孔隙問題,影響 gc 掃描性能?

3.Eden

4.年老代

4)內存分配并發安全問題

同步處理(采用 CAS + 失敗重試)

TLAB 上分配

5)對象的創建方式

new、Class.newInstance、Constructor.newInstance、clone、反序列化

6)對象的訪問定位

句柄?、直接指針(HotSpot)

7)引用類型

強引用、軟引用、弱引用、虛引用(幽靈引用/幻影引用)PhantomReference?

8)對象拷貝克隆

深拷貝和淺拷貝

拷貝有兩種方式:
實現 Cloneable 接口并重寫 Object 類中的 clone()方法;
實現 Serializable 接口,通過對象的序列化和反序列化實現克隆,可以實現真
正的深度克隆

9)內存使用

1.內存溢出

OOM錯誤:stackoverflow錯誤,permgen space錯誤

2.內存泄漏

類的靜態變量

各種連接,如數據庫連接、網絡連接和IO連接等

變量不合理的作用域

內部類持有外部類

改變哈希值

單例模式

監聽器

ThreadLocal的誤用

三、GC

(1)判斷垃圾

1)算法

引用計數(缺點:不能解決循環引用)、根可達性分析

2)GC roots

1.虛擬機棧(JVM stack)中引用的對象

2.方法區中類靜態屬性引用的對象

3.本地方法棧(Native Stack)引用的對象

(2)垃圾回收算法

復制、標記清除、標記整理、分代回收、分塊回收

(3)hopspot垃圾回收器

1)GC類型

Minor GC

Major GC

Full GC(Major GC對老年代/永久代的stop the world的GC)

Mixed GC(G1)

1)新生代回收器

serial、parNew、parallelScavenge

2)老年代回收器

CMS、serialOld、parallelOld?

3)整堆回收器

G1

關系:(serial和parNew)搭配(CMS和serialOld)、parallelScavenge搭配(serialOld和parallelOld)、CMS并發模式失敗后以serialOld做備份

4)CMS

1、運作步驟

初始標記(stop?the?world)、并發標記、重新標記(stop?the?world)、并發清除

2、優點

并發收集、低停頓

3、缺點

CMS收集器對CPU資源非常敏感

CMS收集器無法處理浮動垃圾(Concurrent?Mode?Failure)

CMS收集器會產生大量空間碎片

5)G1

1、特點

并行于并發、空間整合、可預測的停頓、分代收集

2、運作步驟

初始標記、并發標記、最終標記、篩選回收

(4)垃圾回收機制

1)GC觸發的條件

Minor GC觸發條件:當Eden區滿時,觸發Minor GC

Full GC觸發條件:

1、調用System.gc時,系統建議執行Full GC,但是不必然執行

2、老年代空間不足

3、方法去空間不足

4、通過Minor GC后進入老年代的平均大小大于老年代的可用內存

5、由Eden區、From Space區向To Space區復制時,對象大小大于To Space可用內存,則把該對象轉存到老年代,且老年代的可用內存小于該對象大小

6、?CMS GC時出現promotion failed和concurrent mode failure?

2)年輕代到年老代的晉升過程的判斷條件

1、長期存活的對象進入老年代(15次MinorGC,JVM參數-XX:MaxTenuringThreshold)

2、動態對象年齡判定(大于等于某個年齡的對象超過了survivor空間一半)

3、如果對象的大小大于Eden的二分之一會直接分配在old,如果old也分配不下,會做一次majorGC。如果小于eden的一半但是沒有足夠的空間,就進行minor gc也就是新生代GC,minor gc后,survivor仍然放不下,則放到老年代

3)一次完整的 GC 流程

1.大對象直接進入到老年代
2.小對象先在eden區分配內存,當eden滿了后,觸發一次Minor GC,清理eden區域
3.存活下來的對象進入到survivor區域,年齡+1
4.當年齡>15(默認)時進入到老年代,當老年代滿了后觸發一次Full GC

4)fullGC 很頻繁,線上排查問題

查看gc.log

?jmap -histo:live pid

-XX:+HeapDumpBeforeFullGC

jstat?-gcutil?pid

四、jvm分析

(1)jvm命令工具

jstack
jmap
jhat
jstat
jinfo
jps
jconsole, jvisualvm

(2)線程堆棧

1)線程堆棧信息

線程的名字、線程的優先級、線程 id、線程的狀態、線程占用的內存地址、線程的調用棧

2)線程狀態

NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED

3)分析性能問題

1、系統無緣無故的cpu過高

2、系統掛起,無響應

3、系統運行越來越慢

4、性能瓶頸(如無法充分利用cpu等)

5、線程死鎖,死循環等

6、由于線程數量太多導致的內存溢出(如無法創建線程等)

五、類加載

(1)雙親委派模型

類加載器:Bootstrap、Extension、Application

(2)打破雙親加載

JNDI、JDBC、Tomcat

(3)類加載過程

裝載、鏈接(驗證、準備、解析)、初始化、使用、卸載

(4)類的實例化順序

父類靜態變量->父類靜態代碼塊->子類靜態變量->子類的靜態代碼塊->父類成員變量->父類代碼塊->父類構造方法->子類成員變量->子類代碼塊->子類構造方法

(5)類裝載方式

1)隱式裝載

創建類對象、使用類的靜態域、創建子類對象、使用子類的靜態域。

其他特殊的隱式加載:
在JVM啟動時,BootStrapLoader會加載一些JVM自身運行所需的class
在JVM啟動時,ExtClassLoader會加載指定目錄下一些特殊的class
在JVM啟動時,AppClassLoader會加載classpath路徑下的class,以及main函數所在的類的class文件

2)顯式裝載

ClassLoader.loadClass(className) :只執行裝載過程。

Class.forName(className):執行類的裝載、鏈接、初始化過程

注:1、Class.forName(className)是初始化類,newInstance()是實例化類。new是初始化加實例化類。2、new關鍵字和Class類的newInstance()的區別

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Java JVM总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本人dh亚洲人ⅹxx | 色婷婷av一区二区三区四区 | 琪琪色在线视频 | 亚洲va欧美 | 少妇一级淫片免费视频 | 操操日日 | 国产激情四射 | 中文在线观看免费网站 | 欧美日韩三级在线 | 欧美高清免费 | 激情女主播 | 国产精品欧美一区二区三区 | 亚洲色图网址 | 黄色三级视频网站 | 九九热免费在线视频 | 亚洲图片中文字幕 | 色哟哟网站 | 无码内射中文字幕岛国片 | 公交上高潮的丁芷晴 | 欧美视频免费在线 | 蜜臀av一区 | 国产真人做爰毛片视频直播 | 国产在线综合视频 | 美女啪啪免费视频 | 91精品国产综合久久久蜜臀粉嫩 | 国产一区不卡视频 | 麻豆传媒在线视频 | 亚洲成色| 亚洲精品乱码久久久久久蜜桃欧美 | 国产人妻精品久久久久野外 | 国产网站久久 | 亚洲中文一区二区 | 国产激情自拍 | 这里精品| 91好色先生tv | 日本免费电影一区二区三区 | 国产中文字幕免费 | 蜜桃av噜噜一区二区三区麻豆 | 国产成人无码一区二区三区在线 | 久久不卡 | 亚洲av无码一区二区三区在线观看 | 欧美成人不卡视频 | 日本www在线| 天天操天天弄 | 亚洲国产成人精品无码区99 | av日韩免费| 色视频在线免费观看 | 成人精品国产 | 亚洲九九色 | 欧美日韩美女 | 精品人妻伦九区久久aaa片 | 亚洲久视频 | 亚洲视频免费观看 | 日韩欧美一级视频 | 国产一区二区在线观看免费 | 日韩av综合| 中文字幕在线观看1 | 亚洲一区二区国产 | 在线免费观看国产 | 国产精品无码一区 | 在线看黄网站 | 尤物在线免费视频 | 亚洲av无码电影在线播放 | 欧美性爱视频久久 | 成人久久毛片 | 熟妇人妻无码xxx视频 | 麻豆成人免费 | 99视频热| 大尺度网站在线观看 | 91在线观看.| 亚洲综合一区二区三区 | 91pao| 亚洲av午夜精品一区二区三区 | 大桥未久在线视频 | 在线观看的av网址 | av网在线播放 | 国产男女猛烈无遮挡免费观看网站 | 制服下的诱惑暮生 | 国产字幕av | 国产免费一区二区三区免费视频 | 日韩欧美中字 | 99精品视频免费在线观看 | 男阳茎进女阳道视频大全 | 亚洲区成人| 亚洲视频1区 | 欧美爱爱网 | 日韩欧美中文在线 | 大学生高潮无套内谢视频 | 爆操老女人 | 日韩一区二区欧美 | 最新中文字幕av专区 | 女av在线 | av男人的天堂在线观看 | 奇米网7777| 美女裸体跪姿扒开屁股无内裤 | 99精品一区| 在线看免费毛片 | 日韩视频专区 | 黄色三级在线播放 |