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

歡迎訪問 生活随笔!

生活随笔

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

java

【Java虚拟机】Java虚拟机深度讲解、VisualVM工具、JVM调优

發布時間:2024/2/28 java 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java虚拟机】Java虚拟机深度讲解、VisualVM工具、JVM调优 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

從控制臺看Java版本

HotSpot

它是Sun JDK和OpenJDK中所帶的虛擬機,也是目前使用范圍最廣的Java虛擬機。 最初并非由Sun公司開發,而是由一家名為“Longview Technologies”的小公司設計的。

HotSpot VM既繼承了Sun之前兩款商用虛擬機的優點(如前面提到的準確式內存管理),也有許多自己新的技術優勢, 如它名稱中的HotSpot指的就是它的熱點代碼探測技術。

JVM Client/Server是兩套不同的機制

Java語言可以做C/S,也可以做B/S

Client是對桌面級應用的內存分配做優化。桌面系統一次只能按一個按鈕,線程少很多。內存分配的空間,相比Server要小一些。

B/S是可以并發的,Server把內存分配的空間比較大。在內存比較緊張的情況下,可能會造成空間浪費。


一、JVM總體結構圖




二、JVM堆結構圖及分代


圖:Java堆示意圖,對象創建后,若不被回收,會從左到右一步一步走。

年輕代(Eden對象創建初始化的地方,垃圾回收率是最高的,大約80%、From、To)、老年代、持久代

1、新生代

整個過程,說白了就是,折騰這一堆對象,看誰能進入老年代。

2、老年代

3、永久代(JDK1.7之后,逐漸不使用)

三、JVM中垃圾回收算法

1、引用計數 (Reference Counting)

2、復制 (Copying)(比如Survivor區)

綠色是需要被復制的對象,藍色的是空的,灰色的是即將被回收的對象,橘色的是空的。

3、標記-清除 (Mark-Sweep)



4、標記-整理(Mark-Compact)




四、JVM中的垃圾收集器

如果說,垃圾回收算法是方法論的話,那么垃圾收集器就是對該方法論的具體實現。

HotSpot中的分代收集器




不想過長地占用工作線程的時間(減少用戶線程等待的時間)

收集器配合關系:


解決吞吐量的問題,通過減少
吞吐量 = CPU運行用戶程序的時間 / CPU運行用戶程序的時間+GC耗時





并發(包含用戶線程):GC線程一邊回收工作,用戶線程一邊運行
并行(不包含用戶線程):用戶線程停止在安全點上,多個GC的線程一起工作

含有Parallel的收集器都是并行收集器,是不能和用戶線程同時運行的。含有Concurrent的收集器可以和用戶線程同時工作。

年輕、老年代的回收期可以這樣組合:


JDK1.7加入


五、JVM優化

JDK自帶的小工具:在jdk bin目錄下
C:\Program Files\Java\jdk-11.0.3\bin


Visualvm從JDK9開始就不再打包在jdk里面了,可以從官方下載:https://visualvm.github.io/download.html

安裝完成后,可以下載使用強大的Visual GC插件

運行了一個爬蟲,效果如下:

獲取當前虛擬機的信息

在Eclipse的Run Configurations中,修改垃圾收集器


Eclipse調優












總結

以上是生活随笔為你收集整理的【Java虚拟机】Java虚拟机深度讲解、VisualVM工具、JVM调优的全部內容,希望文章能夠幫你解決所遇到的問題。

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