成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

巧解IBM JVM for Linux onPOWER性能調優(yōu)

開發(fā) 后端
本文將介紹用于iSeries和pSeries上的IBMJVMforLinux的一些重要性能調優(yōu)問題,這里提供的技巧可應用于IBMiSeries和pSeries上的IBMJDK1.3.1和JDK1.4.2forLinux,但是本文的特別針對目標是最新的IBMJDK版本JDK1.4.2。

你對IBMJVM for Linux onPOWER的性能調優(yōu)技巧是否了解,這里和大家重點討論一下用于iSeries和pSeries上的IBMJVMforLinux的一些重要性能調優(yōu)問題,相信本文介紹一定會讓你有所收獲。

IBM JVM for Linux onPOWER的性能調優(yōu)技巧

本文將介紹用于iSeries和pSeries上的IBMJVMforLinux的一些重要性能調優(yōu)問題。在撰寫這篇文章的時候,IBM推出了JDK1.3.132-bit和JDK1.4.2,但無論是32位還是64位風格的,都適用于IBMiSeries和pSeries上的Linux。本文中提供的技巧可應用于IBMiSeries和pSeries上的IBMJDK1.3.1和JDK1.4.2forLinux,但是本文的特別針對目標是最新的IBMJDK版本JDK1.4.2。

編寫性能高效的Java代碼

  本文將重點參考針對JDK1.3.1和JDK1.4.2的 IBMJVMDiagnosticsGuides。

  這一節(jié)將介紹編寫性能高效Java代碼的一些通用準則,明確討論如何避免對象創(chuàng)建和垃圾收集(GC),同時還將討論JNI、同步和數(shù)據(jù)結構。

避免對象創(chuàng)建和GC

  只要有可能,應該避免創(chuàng)建對象,防止調用構造函數(shù)帶來的相關性能成本,以及在對象結束其生命周期時進行垃圾收集所帶來的成本。

  考慮以下這些準則:

只要有可能,就使用基本變量類型,而不使用對象類型。例如,使用int,而不使用Integer。

  緩存那些頻繁使用的壽命短的對象,避免一遍又一遍地重復重建相同的對象,并因此進行GC。

  在處理字符串時,使用StringBuffer而不使用字符串連接,因為字符串對象具有不可變的特性,并且需要創(chuàng)建額外的字符串對象,而這些對象最終必須經(jīng)歷GC。

  避免過度對Java控制臺進行寫操作,降低字符串對象處理、文本格式化和輸出帶來的成本。

  實現(xiàn)數(shù)據(jù)庫連接池,重用連接對象,而不是重復地打開和關閉連接。

  使用線程池(threadpooling)。避免不停地創(chuàng)建和刪除線程對象,特別是在大量使用線程的時候。

  通過System.gc()調用避免在代碼中調用GC。GC是一個“停止所有處理(stoptheworld)”的事件,它意味著除了GC線程自身外,其他所有執(zhí)行線程都將處于掛起狀態(tài)。如果必須調用GC,那么可以在非緊急階段或空閑階段實現(xiàn)它。

  避免在循環(huán)內分配對象,這會使對象在Java堆上的存活時間超過必要的存活時間。

Java Native Interface

  使用本機代碼編寫應用程序部分,特別是頻繁使用的部分,并將之與Java鏈接,這樣做通常是為了提高性能。不過,JVM與本機代碼之間的通信通常很慢,因此,太多的JNI調用可能會降低性能。只要有可能就應該將本機操作集合在一起,以減少JNI調用的數(shù)量。

  使用JNI代碼本地處理異常,盡管有時不可避免地會導致性能下降。在這種情況下,應該使用ExceptionCheck()函數(shù),因為與ExceptionOccurred()相比較,它帶來的計算開銷更少一些。后者必須創(chuàng)建一個將引用的對象,以及一個本地引用。

同步

  為了減少JVM和操作系統(tǒng)中的爭用,應該只在可行的情況下才使用同步方法。不要將同步方法放到循環(huán)結構中。

數(shù)據(jù)結構

  作為一條通用規(guī)則,在更簡單的數(shù)據(jù)結構能滿足需要的地方,應該避免使用更復雜的數(shù)據(jù)結構。例如,在可以使用數(shù)組的地方不要使用向量。使用最有效的方法搜索元素,并將元素插入數(shù)據(jù)結構中,比如說,在向量的結尾處添加和刪除元素,以便獲得更好的性能。

提高性能的編譯選項

  用-O優(yōu)化標記編譯Java代碼。代碼優(yōu)化提供了以下幾個好處:

  讓代碼變得模糊,使它更難以進行“逆向工程(reverse-engineer)”。

  極大地增強源代碼的安全性。

  極大地減小Java程序的大小。

  提高運行時性能#p#

提高性能的環(huán)境設置

◆Spinloop

  目前,通過調整SPINLOOP變量和時間片值,可以顯示可獲得的最大性能。IBM_LINUX_SPIINLOOP時間值是一個進程在鎖定之前可以在某個繁忙的鎖上自旋的次數(shù)。有三個SPINLOOP變量可進行調整(從0到100的數(shù)字):

  IBM_LINUX_SPINLOOP1

  IBM_LINUX_SPINLOOP2

  IBM_LINUX_SPINLOOP3

  在16路LPAR上執(zhí)行的基準測試認為以下設置將是最佳設置:

  IBM_LINUX_SPINLOOP1=96

  IBM_LINUX_SPINLOOP2=85

  IBM_LINUX_SPINLOOP3=85

  與其他任何全局變量一樣,需要在shell實例中設置這些變量,JVM進程將會在這個實例中運行,因此,可以通過JVM將這些設置讀取到全局變量表中。

◆Sysctl

  在可以運行內核2.4.19的SLES8上,有一個用于設置Linux內核中時間片的最大值和最小值的選項。這些都是通過sysctl命令設置的。為了獲得好的Java性能,極力推薦將sysctl值sched_yield_scale設置為1。

路徑
  CLASSPATH變量應該在搜索路徑的前面包含一些最常使用的Java庫。對于LIBPATHandLD_LIBRARY_PATH變量,也應該這樣做,以便獲得最常使用的JNI共享庫。

用戶限制設置

  為了獲得最佳性能,讓運行JVM進程的用戶擁有經(jīng)過正確配置的用戶設置是很重要的。這些參數(shù)可以設置成以下兩種形式之一:

  暫時地,適用于通過ulimit命令登錄shell會話期間。

  永久地,通過將一個相應的ulimit語句添加到由登錄shell讀取的文件之一(例如~/.profile),即特定于shell的用戶資源文件;或者通過編輯/etc/security/limits.conf。

  建議設置成無限制(unlimited)的一些重要設置是:

  數(shù)據(jù)段長度:ulimit–dunlimited

  最大內存大?。簎limit–munlimited

  堆棧大?。簎limit–sunlimited

  CPU時間:ulimit–tunlimited

  虛擬內存:ulimit–vunlimited

  對于需要做許多套接字連接并使它們處于打開狀態(tài)的Java應用程序而言,最好通過使用ulimit–n,或者通過設置/etc/security/limits.conf中的nofile參數(shù),為用戶把文件描述符的數(shù)量設置得比默認值高一些。

GC和Java堆

  “垃圾收集器”是影響JVM性能的最重要的JVM組件之一。關于GC和堆大小調優(yōu)的一般性IBMJVM討論(在針對JDK1.3.1和JDK1.4.2的IBMJVMDiagnosticsGuides中)也可應用于IBMJVMonLinux(包括LinuxonPOWER),只是有一些IBMJVMonLinux特定的東西,后面會進行討論。

  最大堆大小是由–Xmx控制的,在32位IBMJVMforLinux上,可以將該值設置得比在32位IBMJVMforAIX上的更高一些,因為這兩個操作系統(tǒng)的內存模式有所不同。如果沒有指定–Xmx選項,則使用默認設置(即實際內存的一半,最小值是16MB,最大值是512MB)。

  如果沒用–Xms選項明確指定初始堆大小,那么該值是默認值4MB。有關GC和Java堆調優(yōu)的更多信息,請參閱針對JDK1.3.1和JDK1.4.2的IBMJVMDiagnosticsGuides中的“DebuggingPerformanceProblems:JVMPerformance”。“UnderstandingtheGarbageCollector”和“GarbageCollectorDiagnostics”這兩章也值得一看。

JIT

  就性能而言,JIT是最重要的JVM組件。關于IBMJVMJIT的一般性討論,請參閱JVMDiagnosticsGuide中的“UnderstandingtheJIT”小節(jié)。要獲得關于JIT性能的Linux特定細節(jié),請參閱“LinuxProblemDetermination”和“JITDiagnostics”的JIT部分。

監(jiān)控JVM

  在JVMDiagnosticsGuide的“LinuxProblemDetermination”一章中,詳細地討論了IBMJVMforLinux性能問題確定、JVM監(jiān)控和一些工具。

  以下章節(jié)可能有其他的價值:

  追蹤Java應用程序和JVM。

  使用JVM監(jiān)控接口(JVMMI)。

  使用可靠、可用和可服務的接口。

  使用JVMPI。

  使用第三方工具。

Linux線程模型和JVM

  以下是一些線程模型實現(xiàn)方面的詳細說明,該實現(xiàn)將影響不同Linux發(fā)行版本上的JVM性能。請參閱JVMDiagnosticsGuide中的“LinuxProblemDetermination”一章,以了解更多細節(jié)。

  另一個要知道的問題是Linux上的線程浮點堆棧限制,正如JVMDiagnosticsGuide的“FloatingStacksLimitation”小節(jié)中所討論的那樣。

詞匯表

GC,垃圾收集器
JDK,Java軟件包,包括JRE和一些開發(fā)工具
JIT,即時編譯器
JRE,Java運行時環(huán)境,無開發(fā)工具
JVMMI,Java虛擬機監(jiān)控接口
JVM,Java虛擬機
JVMPI,Java虛擬機分析接口
NPTL,本地POSIX線程庫
OS,操作系統(tǒng)
RHELAS,RedHatEnterpriseLinux高級服務器版本
SLES,SUSELinux企業(yè)服務器
SR,服務刷新

【編輯推薦】

  1. JVM for Linux JIT診斷技術簡介
  2. JVM安裝與Tomcat配置具體步驟
  3. 巧解Tomcat中JVM內存溢出問題
  4. 新一代JVM垃圾回收算法出爐
  5. 揭露JDK,JRE,JVM三者不為人知的隱情
責任編輯:佚名 來源: ibm.com
相關推薦

2017-07-21 08:55:13

TomcatJVM容器

2024-12-04 15:49:29

2023-04-24 14:54:09

JVM性能調優(yōu)

2012-01-10 14:35:08

JavaJVM

2019-02-19 10:25:28

JVM性能工具

2021-12-06 11:03:57

JVM性能調優(yōu)

2019-11-01 08:49:07

JVM監(jiān)控性能

2020-11-09 07:34:49

JVM性能監(jiān)控

2023-11-11 19:07:23

JVMJava

2010-09-26 13:39:46

JVM調優(yōu)

2010-09-26 09:08:17

JVM調優(yōu)

2012-01-10 15:13:56

JavaJVM

2010-09-17 13:45:40

JVM termina

2022-04-03 19:51:38

linux服務性能

2010-09-26 15:53:25

JVM內存溢出

2013-03-20 17:18:07

Linux系統(tǒng)性能調優(yōu)

2012-06-20 11:05:47

性能調優(yōu)攻略

2021-03-04 08:39:21

SparkRDD調優(yōu)

2021-06-03 08:32:18

JVM調優(yōu)虛擬機

2017-10-17 14:02:30

jvm調優(yōu)工具
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美激情视频一区二区三区免费 | 99热热 | 日韩精品在线一区 | 国产精品一区二区免费看 | 老司机成人在线 | 全免一级毛片 | 欧美午夜一区二区三区免费大片 | 国产精品久久久久久久岛一牛影视 | 男女污污网站 | 久久av网站| 视频一区二区三区中文字幕 | 精品一区二区三区在线视频 | 黑人性hd| 在线观看日本网站 | 97色在线视频 | 欧美亚洲视频在线观看 | 99成人精品 | 亚洲精品99 | 精品二三区 | 天天拍夜夜爽 | 一区二区三区视频在线观看 | 激情国产 | 欧美激情一区二区三级高清视频 | 日本a∨精品中文字幕在线 亚洲91视频 | 日韩综合网 | 亚洲国产一区二区三区 | 在线亚洲精品 | 天天操天天摸天天爽 | 日韩欧美手机在线 | 免费一级片 | 91久久久精品国产一区二区蜜臀 | 精品久久久久久久 | 午夜影视大全 | 国产成人精品免费视频大全最热 | 久久精品无码一区二区三区 | 国产成人福利视频在线观看 | 国产美女精品 | 中日韩欧美一级片 | av天天看 | 欧美日韩视频网站 | 毛片一级片|