闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亝鎹i柣顓炴閵嗘帒顫濋敐鍛婵°倗濮烽崑鐐烘偋閻樻眹鈧線寮撮姀鐘栄囨煕鐏炲墽鐓瑙勬礀閳规垿顢欑紒鎾剁窗闂佸憡顭嗛崘锝嗙€洪悗骞垮劚濞茬娀宕戦幘鑸靛枂闁告洦鍓涢ˇ顓熺節閳封偓閸曞灚鐤佸Δ鐘靛仜濡繂顕i鈧畷鐓庮熆椤忎焦娅婇柟顔筋殜閺佹劖鎯斿┑鍫濆毈闁诲海鎳撻幉锛勬崲閸曨厽顫曢柟鐑樻尰缂嶅洭鏌曟繛鍨姢闁荤喆鍔岄—鍐Χ鎼粹€茬凹缂備緡鍠楅幐鎼佹偩閻戣棄纭€闁绘劕绉堕崰鏍箖濞嗘挸绠f繝闈涙搐椤︹晠姊洪幎鑺ユ暠闁搞劌婀卞Σ鎰板箻鐎涙ê顎撴繝娈垮枟閸╁牊绂嶅┑瀣疄闁靛ň鏅涢悙濠囨煏婵炲灝鈧绮诲顒夋富闁靛牆妫涙晶顒勬煟閺冩垵澧撮柣鎿冨墴椤㈡宕掑Δ鈧禍楣冩偡濞嗗繐顏痪鐐倐閺屾稒鎯旈敐鍡樻瘓閻庢鍣崑濠囩嵁濡偐纾兼俊顖滅帛椤忕喖姊绘担鑺ョ《闁革綇绠撻獮蹇涙晸閿燂拷婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繘鏌i幋锝嗩棄闁哄绶氶弻鐔兼⒒鐎靛壊妲紒鐐劤椤兘寮婚敐澶婄疀妞ゆ帊鐒﹂崕鎾剁磽娴e搫小闁告濞婂濠氭偄閸忓皷鎷婚柣搴ㄦ涧婢瑰﹤危椤斿墽纾藉ù锝呮惈鍟搁梺鍝ュУ閻楃姴顕f繝姘╅柍鍝勫€告禍婊堟⒑閸涘﹦绠撻悗姘嚇婵偓闁靛牆妫涢崢閬嶆⒑闂堟胆褰掑磿闁秴鐒垫い鎺嗗亾婵犫偓闁秴绠查柕蹇曞Л濡插牓鏌曡箛鏇炐㈤柤鏉跨仢閳规垿鍩ラ崱妤冧淮濡炪倖娉﹂崶顭戞閻庡箍鍎遍ˇ浼村煕閹寸姷纾奸悗锝庡亽閸庛儵鏌涙惔銏犲缂佽鲸甯為幏鐘诲箵閹烘挻顔掑┑鐘殿暜缁辨洟寮拠鑼殾闁绘梻鈷堥弫宥嗘叏濡じ鍚柡澶嬫倐濮婄粯鎷呴崫銉︾€┑鈩冦仠閸斿酣骞忕€n喖钃熼柕澶堝劤閿涙盯姊虹憴鍕妞ゆ泦鍥х闁逞屽墴閹嘲饪伴崘鐐枅閻庢鍠楅幃鍌氼嚕椤曗偓瀹曞ジ鎮㈤崫鍕辈闂傚倷鑳剁划顖毭洪弽顓炵9闁革富鍘搁崑鎾愁潩閻愵剙顏�
开发学院WEB开发Jsp 透过Java参数来改善Java效能 阅读

透过Java参数来改善Java效能

 2008-01-05 18:51:37 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亜顒㈡い鎰Г閹便劌顫滈崱妤€骞婄紓鍌氬€瑰銊╁箟缁嬫鍚嬮柛顐線缂冩洟姊婚崒娆戭槮婵犫偓闁秵鎯為幖娣妼缁愭鏌″搴′簽濞戞挸绉甸妵鍕冀椤愵澀娌梺缁樻尪閸庣敻寮婚敐澶婂嵆闁绘劖绁撮崑鎾诲捶椤撴稑浜炬慨妯煎亾鐎氾拷闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亝鎹i柣顓炴閵嗘帒顫濋敐鍛婵°倗濮烽崑娑⑺囬悽绋挎瀬闁瑰墽绮崑鎰版煙缂佹ê绗ч柍褜鍓﹂崣鍐潖閸濆嫅褔宕惰娴犲ジ姊虹拠鑼闁煎綊绠栭幃楣冩倻閽樺鎽曢梺闈涱檧婵″洭宕㈤悽鍛娾拺閻熸瑥瀚烽崯蹇涙煕閻樺磭澧甸柕鍡楀€圭缓浠嬪川婵犲嫬骞堥梺纭呭閹活亞妲愰弴鐔哄ⅰ闂傚倷绶氬ḿ褍煤閵堝洠鍋撳顐㈠祮闁绘侗鍣i獮鎺懳旈埀顒傜不閿濆棛绡€闂傚牊绋戦弳娆徝瑰⿰鍫㈢暫闁哄矉缍佹慨鈧柍鎯版硾濠€杈ㄧ珶閺囩喓绡€婵﹩鍘鹃崢鐢告⒑缂佹ê濮﹂柛鎾村哺閹ɑ娼忛妸銈囩畾闂佸湱绮敮鐐存櫠濞戞氨纾肩紓浣贯缚濞插鈧娲栧畷顒冪亙闂佸憡鍔曢崯鐘诲礈濠靛牊宕叉繛鎴炨缚閺嗗棗鈹戦悩杈厡闁轰焦鐗滅槐鎾存媴娴犲鎽甸梺鍦嚀濞层倝鎮鹃悜钘夌闁规惌鍘介崓鐢告⒑閻熸澘鎮侀柣鎺炵畵閹骞栨担鍏夋嫽婵炶揪绲块崕銈夊吹閳ь剟姊洪幖鐐测偓鏍偋閻樿崵宓侀煫鍥ㄧ⊕閺呮悂鏌ㄩ悤鍌涘濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堟敾闁告瑥绻戦妵鍕箻閸楃偟浠肩紓浣哄閸ㄥ爼寮诲☉銏犵疀闂傚牊绋掗悘鍫ユ倵閻熺増鍟炵紒璇插暣婵$敻宕熼姘鳖啋闁诲酣娼ч幗婊堟偩婵傚憡鈷戠痪顓炴媼濞兼劖绻涢懠顒€鏋庢い顐㈢箳缁辨帒螣閼测晜鍤岄梻渚€鈧偛鑻晶顔肩暆閿濆牆鍔垫い锔界叀閹繝濡舵径瀣帾闂佸壊鍋呯换鍐磻椤忓懐绠剧€瑰壊鍠曠花濠氬箚閻斿吋鈷戦悗鍦У閵嗗啴鏌ら崘鑼煟鐎规洘绻堥弫鍐焵椤掑嫧鈧棃宕橀鍢壯囨煕閳╁喚娈橀柣鐔稿姍濮婃椽鎮℃惔鈩冩瘣闂佺粯鐗曢妶绋跨暦閻戞ḿ绡€闁搞儜鍐ㄧギ闂備線娼ф蹇曟閺囥垹鍌ㄦい蹇撶墛閳锋垿鏌熼懖鈺佷粶闁告梹顨婇弻锟犲川椤旈敮濮囩紓浣稿€圭敮鐔妓囩€靛摜纾奸弶鍫涘妼缁楁碍绻涢悡搴g闁糕斁鍓濋幏鍛存煥鐎e灚缍楅梻鍌氬€峰ù鍥ь浖閵娾晜鍊块柨鏇炲€哥粻鏌ユ煕閵夘喖澧柡瀣╃窔閺岀喖宕滆鐢盯鏌¢崨顔藉€愰柡灞诲姂閹倝宕掑☉姗嗕紦闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亜顒㈡い鎰Г閹便劌顫滈崱妤€骞婄紓鍌氬€瑰銊╁箟缁嬫鍚嬮柛顐線缂冩洟姊婚崒娆戭槮婵犫偓闁秵鎯為幖娣妼缁愭鏌″搴′簽濞戞挸绉甸妵鍕冀椤愵澀娌梺缁樻尪閸庣敻寮婚敐澶婂嵆闁绘劖绁撮崑鎾诲捶椤撴稑浜炬慨妯煎亾鐎氾拷  闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌i幋锝呅撻柛銈呭閺屻倝宕妷锔芥瘎婵炲濮靛銊ф閹捐纾兼繛鍡樺笒閸橈紕绱撴笟鍥ф珮闁搞劌鐖兼俊鎾礃椤旂厧绐涢梺鍝勵槹閸ㄥ綊宕㈠ú顏呭€垫鐐茬仢閸旀碍銇勯敂璇茬仸鐎规洩绻濋獮搴ㄦ嚍閵壯冨妇闂傚⿴鍋勫ú锕€煤閺嶃劎澧¢梻鍌欐祰椤曆呪偓鍨浮瀹曟粓鎮㈡總澶嬬稁闂佹儳绻愬﹢杈╁閸忛棿绻嗘い鏍ㄧ閹牊銇勯銏⑿㈡い顏勫暣婵″爼宕卞Δ鈧~搴ㄦ⒑閸涘⿴鐒奸柛銉戝懎寮ㄥ┑鐘灱濞夋稖鐧岄梺缁樻煥閸氬鎮¢妷鈺傚€甸柨婵嗛閸樻挳鏌涚€n偅灏扮紒缁樼箓椤繈顢樺☉娆忣伖闂佽崵鍠愮划搴㈡櫠濡ゅ啯鏆滈柟鐑樻尵椤╂彃霉閻撳海鎽犻柣鎾存礋閺岀喖骞嗚閸ょ喖鏌嶉挊澶樻█闁哄苯绉剁槐鎺懳熼懡銈呭汲婵$偑鍊ら崑鍛崲閸儱绠犳繝濠傛噹閺嬪牊淇婇婵愬殭妞ゅ繐缍婂濠氬磼濞嗘埈妲梺纭咁嚋缁辨洜鍒掑▎鎾崇闁挎柨鎼禍濂告⒑閸濆嫷妲归柛銊у枛瀵悂寮崼鐔哄幐闂佸憡鍔х徊鑺ョ閸撗呯=濞达綀娅g敮娑氱磼鐎n偅灏扮紒鍌涘浮閺佸啴宕掑鎲嬬床婵犳鍠楅敃鈺呭礈閿曞倹鍊甸柟鎯板Г閳锋帒霉閿濆懏鎲搁柨娑樼Ф缁辨帡顢氶崨顓犱桓濡ょ姷鍋為崹鍨暦閸洦鏁嗛柛灞炬皑閵堬箓姊虹拠鎻掑毐缂傚秴妫欑粋宥夊冀椤撶偟鍝楁繛瀵稿Т椤戝棝鎮″▎鎾粹拺妞ゆ挶鍔庨悾鍗烆熆瑜滈崹閬嶅Φ閸曨垰妫橀柛顭戝枓閸嬫挾鎲撮崟顓涙敵婵犵數濮村ú锕傚磹闁垮浜滈煫鍥ㄦ尭椤忋倝鏌涚€n偅宕岀€殿喖鈧噥妾ㄥ┑鐐插悑閻楁洟鍩為幋锔藉亹閻庡湱濮撮ˉ婵嬫⒑缁嬭儻顫﹂柛鏂块叄楠炲顫㈠畝鈧悿鈧┑鐐村灦宀e潡鎮块崨瀛樷拺闁革富鍙€濡炬悂鏌涢悩鎰佹疁鐎殿喗鐓¢獮鏍ㄦ媴閸︻厼寮抽梻浣虹帛濞叉牠宕愰崷顓涘亾濮樼偓瀚�
核心提示:透过 java 参数来改善 Java 效能 作者 : 艾群科技 萧松瀛 我们都知道, Java 在执行的时候会吃掉不少记忆体,透过Java参数来改善Java效能,而当记忆体不够用的时候, JVM 会向系统要求更大的记忆体来使用,那么 JVM 所抓取的记忆体量到了这个值之後,便不会再抓取记忆体,但是实际上对於 Java

  透过 java 参数来改善 Java 效能
  
  
  
  作者 : 艾群科技 萧松瀛
  
  
  
  我们都知道, Java 在执行的时候会吃掉不少记忆体,而当记忆体不够用的时候, JVM 会向系统要求更大的记忆体来使用。但是实际上对於 Java 来说,我们会发现资料可以存在许多不同的地方,其中有两个重要的是 Heap 以及 Stack 。这两者有什么差别,我们在以後会提到,但是在这之前,我们先来看一个程式:
  
  
  
  public class testHeap
  
  {
  
  public static void main(String argv[])
  
  {
  
  StringBuffer sb = new StringBuffer();
  
  long starttime;
  
  long endtime;
  
  starttime = System.currentTimeMillis();
  
  for(int i=0; i <=100000; i++)
  
  {
  
  sb.append(i).append("hello").append(i);
  
  if(i % (100000/2) == 0)
  
  {
  
  System.out.PRintln(Runtime.getRuntime().totalMemory());
  
  }
  
  }
  
  endtime = System.currentTimeMillis();
  
  System.out.println("Time: "+(endtime-starttime));
  
  }
  
  }
  
  
  
  执行的结果如下
  
  
  
  C:\java\tmp> java testHeap
  
  2031616
  
  5578752
  
  10498048
  
  Time: 651
  
  
  
  在这里,我们看到 totalMemory 不断的上升,当然,这是正常现象,但
  
  是实际上我们可以控制 JVM 一开始就抓取的记忆体大小,这样的好处是
  
  JVM 一开始就抓取了大量的 Heap 。怎么做呢? 我们先用 java -X 来看
  
  看他有哪些额外的参数可以下,没错,我看到我感爱好的几个参数
  
  
  
  -Xms set initial Java heap size
  
  -Xmx set maximum Java heap size
  
  -Xss set java thread stack size
  
  
  
  接著,我想要让 JVM 一开始就抓取大量的记忆体,因此我选择 -Xms 这
  
  个参数,底下是我的执行结果:
  
  
  
  C:\java\tmp> java -Xms50000000 testHeap
  
  49741824
  
  49741824
  
  49741824
  
  Time: 480
  
  
  
  这时候我们看到 total 的记忆体维持不变,原因很简单,因为 testHeap
  
  使用记忆体的量,并没有超过我们一开始抓到的量。但是有一个很有趣的现象是循环内的时间已经更短了,换一个角度来说,就是程式跑起来更有效率。这种以记忆体空间来换取执行时间的方式,也许并不是最棒的校
  
  调方法,但是却是一个在不修改程式码的方式下,提高效率的方法。当然,我们也可以限制记忆体的最大用量,参数则为 -Xmx 。一般说来,我并不建议您设定 -Xmx ,原因很简单,因为一旦您设定了 -Xmx ,那么 JVM 所抓取的记忆体量到了这个值之後,便不会再抓取记忆体,也就是说您的程式将无法执行,我们看看底下的结果
  
  C:\java\tmp> java -Xmx5000000 testHeap
  
  2031616
  
  5578752
  
  Exception in thread "main" java.lang.OutOfMemoryError
  
  
  
  
  
  C:\java\tmp>

Tags:透过 Java 参数

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接