中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

淺談AIX環境下的Java性能調優

發布時間:2020-08-18 01:15:48 來源:ITPUB博客 閱讀:214 作者:gangyaocn 欄目:編程語言

from IBM

Java 性能準則

在編寫Java應用程序時,以下是基本的準則:

  • 使用字符串緩沖區而不是字符串連接,當進行連續字符串操作時要避免不必要地創建那些最終必須經過垃圾回收的對象。
  • 避免連續寫入 Java 控制臺以減少字符串操作、文本格式化以及輸出的花費。
  • 必要時通過使用變量的原語類型來避免對象創建和操作的花費。
  • 經常高速緩存用過的對象以減少必須的垃圾回收數量,并且避免重復創建對象的需求。
  • 盡可能分組本地操作以減少 Java 本地接口(JNI)的調用。
  • 只有在必要時再使用同步方法,以此限制在 JVM 和操作系統中的多任務。
  • 除非必要避免調用垃圾回收器。如果您必須調用它,只有在空閑時間或一些非關鍵階段再這樣做。
  • 可能時使用整型而不是長整型,因為 32 位操作快于 64 位。
  • 可能時申明方法為 final。JVM 處理 final 的方法較好。
  • 當創建常量時為了減少變量需要初始化的次數,使用關鍵字 static final。
  • 避免不必要的“casts”和“instanceof”引用,因為在 Java 中銷毀操作不是在編譯時而是在運行時執行的。
  • 當數組可以滿足要求時盡可能避免使用向量。
  • 從向量末端添加和刪除項以得到較高性能。
  • 使用 -O 選項編譯 Java 文件。
  • 避免在循環中分配對象。
  • 使用緩沖區 I/O 并調優緩沖區大小。
  • 使用連接池和準備緩存聲明進行數據庫訪問。
  • 使用連接池連接到數據庫并重用連接而不是重復打開和關閉連接。
  • 最大化線程生存期并最小化線程創建和銷毀循環。
  • 最小化共享資源的爭用。
  • 最小化短生存期對象的創建。
  • 避免遠程方法調用。
  • 使用回調以避免阻塞遠程方法調用。
  • 避免創建只用來訪問一個方法的對象。
  • 盡可能保持同步方法處于循環外。
  • 在數據庫中以 Unicode 形式存儲字符串和字符數據。
  • 記錄 CLASSPATH 以便最常用的庫先出現。

監視 Java

在AIX 操作系統中有許多工具可以用來監視Java應用程序的性能,以下是簡單的概述。

vmstat
這條命令提供了各種系統資源的信息。它報告了運行隊列以及等待隊列中內核線程的統計信息、內存使用、頁面調度空間、磁盤 I/O、中斷、系統調用、上下文切換以及 CPU 活動。

iostat
這條命令報告了詳細的磁盤 I/O 信息。

topas
這條命令報告了 CPU、網絡、磁盤 I/O、工作負載管理器和進程活動。

tprof -k -s -e -x "sleep 10"
這條命令可被用來剖析應用程序以查明任何可能影響性能的活動程序/方法。

ps -mo 線程
這條命令顯示了一個進程或線程綁定于哪一個 CPU。

java -verbose:gc
這個選項可被用來檢查垃圾回收對您的應用程序的沖擊。它報告了垃圾回收所花的總共時間,平均每一次垃圾回收花費時間,平均每一次垃圾回收收集的內存以及平均每一次垃圾回收中的對象數。

Java應用程序性能調優

建議在運行Java應用的AIX用戶環境下,設置以下環境變量。

AIXTHREAD_SCOPE=S
用 AIX 4.3.1 啟動,此變量缺省值為 P。這表示進程寬度爭用作用域(M:N)。對于 Java 應用程序,您應該設置這個值為 S,它表示系統寬度爭用作用域(1:1)。

AIXTHREAD_MUTEX_DEBUG=OFF
用調試器為使用目的維持一個活動人工干預列表。

AIXTHERAD_COND_DEBUG=OFF
用調試器為使用目的維持一個條件變量列表。

AIXTHREAD_RWLOCK_DEBUG=OFF
pthreads 庫用調試器為使用目的維護一個包含活動互斥鎖定、條件變量以及讀/寫鎖定的列表。當一個鎖定初始化,如果列表中沒有這一鎖定,它被加入到列表中。此列表以 鏈表形式實現,因此當列表變大時通過搜索它來確定一個鎖定是否存在就包含了性能問題。問題是此列表被鎖定保護,這一鎖定在搜索操作過程中一直保持。當搜索 進行時其它對 pthread_mutex_init() 調用的子例程必須等待。為了優化性能,您應當將此線程調試選項設置為 OFF。它們的缺省值為 ON 。

SPINLOOPTIME=500
spinloop 時間是一個進程在阻塞前在一個繁忙的鎖定上可以循環的次數。這個值缺省設置為 40。如果 tprof 輸出表明 check_lock 例程具有高的 CPU 使用率,并且如果通常鎖定在短時間內可用,您應當通過將值設置為 500 或更高來提高循環時間。

同樣,運行Java應用的AIX用戶環境下,推薦以下設置:
l ulimit -d 不限制
l ulimit -m 不限制
l ulimit -n 不限制
l ulimit -s 不限制

操作系統內一定的環境參數和設置可以用來調優 Java 性能。同樣,許多調優系統部件如 CPU、內存、網絡、I/O 等等的技術,可以提高 Java 性能。

為了使得 Java 的性能和可伸縮性盡可能的好,您應當使用最新可用版本的操作系統和 Java,以及Just-In-Time(JIT)編譯器。

與 Java 相關的最普通的性能問題與垃圾回收機制有關。如果 Java 堆太大,則堆將必須駐留在主內存外。這將導致頁面調度活動增加,它將影響 Java 性能。同樣,一個大的堆可能花很多秒去填充。這意味著,盡管垃圾回收活動不頻繁,但與垃圾回收相聯系的暫停次數將增加。為了調優 Java 虛擬機(JVM)的堆,使用 java 命令加選項 -ms 或 -mx。使用垃圾回收統計信息來幫助決定最佳設置。[@more@]
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洛隆县| 衡水市| 苍梧县| 靖宇县| 昔阳县| 甘南县| 咸丰县| 桐梓县| 道孚县| 雷波县| 六盘水市| 清水县| 长垣县| 宜兰市| 巢湖市| 互助| 安徽省| 遂平县| 新和县| 浑源县| 黑山县| 许昌市| 平阴县| 洞口县| 平乐县| 盐边县| 天台县| 辽宁省| 出国| 旬邑县| 惠州市| 长沙市| 锡林郭勒盟| 临海市| 科技| 云南省| 承德市| 格尔木市| 青田县| 米易县| 青河县|