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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JVM调优基础

發布時間:2024/1/23 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JVM调优基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、JVM調優基本流程 1、劃分應用程序的系統需求優先級 2、選擇JVM部署模式:單JVM、多JVM 3、選擇JVM運行模式 4、調優應用程序內存使用 5、調優應用程序延遲 6、調優應用程序吞吐量

二、選擇JVM部署模式:單JVM、多JVM 1、單JVM 優點:不需要管理多個JVM,降低管理成本; 應用程序消耗內存數量較少 缺點:存在單點故障,一個JVM失效時,整個系統失效。 2、多JVM 優點:更好的可用性,避免單點故障;更低延遲,因為垃圾收集所產生的停頓是程序延遲的主要原因,多JVM減少了每次Full GC所需的時間。 缺點:監控、管理困難,且消耗較多的內存數量。
三、選擇JVM運行模式: 1、client與server模式 -client:把應用當成客戶端類程序進行優化。該選項應該在應用啟動時使用,對這類應用程序而言,內存占用是最重要的性能標準,遠比高吞吐量重要。 -server:把應用當成服務器類程序進行優化。適用于高吞吐量比啟動時間和內存占用更重要的應用程序。 目前還有一個較新的選項: -server -XX:TieredCompilation:結合了二者的優點,可以考慮代替-client。
2、-32與-64 使用32位JVM還是64位JVM由應用程序使用的內存來決定,基本原則如下: 0~2G:32位 2G~32G:使用-d64 -XX:+UserCompressedOops 32G以上:64位 事實上,在Java6 Update18之后,JVM根據堆大小自動啟用-XX:+UserCompressedOops,因此配置時2G以內使用-32,2G以上使用-64即可。
3、選擇垃圾收集器 一般情況下,使用默認的Throughput收集器即可。
四、確定內存占用 1、垃圾收集基礎 (1)三個性能屬性(內存占用、延遲、吞吐量)中任何一個屬性性能的提高幾乎都是以另一個或者2個屬性的性能損失作為代價的。 (2)在程序運行中開啟垃圾收集器日志可以收集GC的大量信息,從而為調優作好數據準備,以下命令用于開啟GC日志: java -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:./test.log SignalGenerator
詳細分析請見《JAVA性能優化權威指南》P194.
2、JAVA程序的內存布局 正如其它一切應用,JAVA在內存中的占用主要分為堆和棧2種,其中堆用于保存程序運行中的各種對象,棧用于保存程序的方法調用、線程調用等。 (1)棧:線程越多,方法調用層次越深,棧占用的內存就越大。 (2)堆:JVM中的堆分為三部分:新生代、老生代、永久代。
3、關于新生代、老生代、永久代。 (1)Java應用程序分配Java對象時,首先在新生代空間中分配對象。存活下來的對象,即經過幾次Full GC之后還保持活躍的對象會被提升進入老生代空間。永久代空間中存放VM和Java類的元數據,以及駐留的Strings和類靜態變量。 (2)新生代與老生代共用Java堆空間,永久代單獨使用空間。
4、堆空間配置選項: (1)-Xms:初始堆大小 ? -Xmx:最大堆大小
  • 默認(MinHeapFreeRatio參數可以調整)空余堆內存小于40%時,JVM就會增大堆直到-Xmx的最大限制。默認(MaxHeapFreeRatio參數可以調整)空余堆內存大于70%時,JVM會減少堆直到 -Xms的最小限制。
  • 上面指定的空間大小為新老生代所共用,默認情況下JVM可以根據應用程序的需要動態的擴展或者收縮。
  • 關注吞吐量及延遲的應用程序應該將-Xms與-Xmx設定為同一值。這是因為無論擴展還是收縮新生代或者老生代空間都要進行Full GC。
(2)-XX:NewSize=<n>[g|m|k] ? -XX:MaxNewSize=<n>[g|m|k] ?-Xmn<n>[g|m|k] 分別設置新生代的默認空間大小、最大空間大小,以及若二者相等時使用-Xmn代替。 老生代不需要單獨設置,用堆大小減去新生代大小即是老生代的大小
(3)-XX:PermSize=<n>[g|m|k] ?-XX:MaxPermSize=<n>[g|m|k] 用于設置永久代的空間大小。
5、計算活躍數據大小 活躍數據是指應用程序處于穩定態(多次執行Full GC以后),Full GC之后Java堆中老年代和永久代所占用的空間大小。
6、Java堆大小計算法則
java堆-Xms -Xmx3~4倍Full GC后的老年代空間大小
永久代-XX:PermSize -XX:MaxPermSize1.2~1.5倍Full GC后的永久代空間大小
新生代-Xmn1~1.5倍Full GC后的老年代空間大小
老生代java堆大小減去新生代大小2~3倍Full GC后的老年代空間大小

總結

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

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