锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲乱码在线观看,亚洲第一页在线观看,美腿丝袜亚洲综合http://www.tkk7.com/ericwang/archive/2005/12/02/22292.htmlDionDionFri, 02 Dec 2005 13:59:00 GMThttp://www.tkk7.com/ericwang/archive/2005/12/02/22292.htmlhttp://www.tkk7.com/ericwang/comments/22292.htmlhttp://www.tkk7.com/ericwang/archive/2005/12/02/22292.html#Feedback0http://www.tkk7.com/ericwang/comments/commentRss/22292.htmlhttp://www.tkk7.com/ericwang/services/trackbacks/22292.html瑙e喅JAVA鏈嶅姟鍣ㄦц兘闂
閫氳繃璐熻澆嫻嬭瘯鍜屽垎鏋愭潵鏀瑰杽JAVA鏈嶅姟鍣ㄥ簲鐢ㄧ殑鎬ц兘

浣滆咃細Ivan Small

璇戣?xMatrix





鐗堟潈澹版槑錛氫換浣曡幏寰桵atrix鎺堟潈鐨勭綉绔欙紝杞澆鏃惰鍔″繀浠ヨ秴閾炬帴褰㈠紡鏍囨槑鏂囩珷鍘熷鍑哄鍜屼綔鑰呬俊鎭強鏈0鏄?/span>
浣滆?Ivan Small;xMatrix
鍘熸枃鍦板潃:http://www.javaworld.com/javaworld/jw-02-2005/jw-0207-server-p3.html
涓枃鍦板潃:http://www.matrix.org.cn/resource/article/43/43998_server_capacity.html
鍏抽敭璇嶏細 server capacity

鎽樿

鏀瑰杽JAVA鏈嶅姟鍣ㄧ殑鎬ц兘闇瑕佹ā鎷熻礋杞戒笅鐨勬湇鍔″櫒銆傚垱寤轟竴涓ā鎷熺幆澧冦佹悳闆嗘暟鎹茍涓斿垎鏋愮粨鏋滃彲鑳芥槸瀵硅澶氬紑鍙戜漢鍛樼殑鎸戞垬銆傝繖綃囨枃绔犱腑鐨勭ず渚嬩粙緇嶄簡JAVA鏈嶅姟鍣ㄦц兘鍒嗘瀽鐨勬蹇靛拰宸ュ叿銆備綔鑰呬嬌鐢ㄨ繖涓ず渚嬫潵鐮旂┒瓚呴璇鋒眰嬈℃暟涓嬪唴瀛樹嬌鐢ㄥ拰鍚屾绔熶簤鐨勫獎鍝嶃?br>浣滆匢van Small

欏圭洰鍥㈤槦宸茬粡寰堢啛鎮夊浣曠粍緇囦竴浜涘叿浣撶殑浠誨姟騫跺畬鎴愪粬浠傜畝鍗曠殑鎬ц兘闂寰堝鏄撶敱涓涓紑鍙戜漢鍛樺垎紱誨茍瑙e喅銆傜劧鑰屽ぇ鐨勬ц兘闂錛岄氬父鍦ㄧ郴緇熷浜庨珮璐熻澆鎯呭喌涓嬪彂鐢燂紝灝變笉鏄繖涔堢畝鍗曡兘澶勭悊鐨勪簡銆傝繖浜涢棶棰橀渶瑕佷竴涓嫭绔嬬殑嫻嬭瘯鐜銆佷竴涓ā鎷熺殑璐熻澆錛屽茍涓旈渶瑕佷粩緇嗗湴鍒嗘瀽鍜岃窡韙?br>
鍦ㄨ繖綃囨枃绔犱腑錛屾垜浣跨敤姣旇緝閫氱敤鐨勫伐鍏峰拰璁懼鍒涘緩浜嗕竴涓祴璇曠幆澧冦傛垜浼氫笓娉ㄤ簬涓や釜鎬ц兘闂錛屽唴瀛樺拰鍚屾錛屼粬浠緢闅劇敤綆鍗曠殑鍒嗘瀽寰楀埌銆傞氳繃涓涓叿浣撶殑渚嬪瓙錛屾垜甯屾湜姣旇緝瀹規槗鍦拌В鍐沖鏉傜殑鎬ц兘闂鑰屼笖鍙互鎻愪緵澶勭悊闂榪囩▼涓殑緇嗚妭銆?br>
鏀瑰杽鏈嶅姟鍣ㄧ殑鎬ц兘

鏈? 鍔″櫒鐨勬ц兘鏀瑰杽鏄緷璧栦簬鏁版嵁鐨勩傛病鏈夊彲闈犵殑鏁版嵁鍩虹鑰屾洿鏀瑰簲鐢ㄦ垨鐜浼氬鑷存洿宸殑緇撴灉銆傚垎鏋愬櫒鎻愪緵鏈夌敤鐨凧AVA鏈嶅姟鍣ㄥ簲鐢ㄤ俊鎭紝浣嗙敱浜庝粠鍗曠敤鎴瘋礋杞戒笅鐨? 鏁版嵁涓庡鐢ㄦ埛璐熻澆涓嬪緱鍒扮殑鏁版嵁鏄畬鍏ㄤ笉鍚岀殑錛岃繖瀵艱嚧鍒嗘瀽鍣ㄧ殑鏁版嵁騫朵笉綺劇‘銆傚湪寮鍙戦樁孌典嬌鐢ㄥ垎鏋愬櫒鏉ヤ紭鍖栧簲鐢ㄧ殑鎬ц兘鏄竴涓ソ鐨勬柟寮忥紝浣嗗湪楂樿礋杞戒笅鐨勫簲鐢ㄥ垎鏋? 鍙互鍙栧埌鏇村ソ鐨勬晥鏋溿?br>

鍦ㄨ礋杞戒笅鍒嗘瀽鏈嶅姟鍣ㄥ簲鐢ㄧ殑鎬ц兘闇瑕佷竴浜涘熀鏈殑鍏冪礌錛?br>        1銆佸彲鎺х殑榪涜搴旂敤璐熻澆嫻嬭瘯鐨勭幆澧冦?br>        2銆佸彲鎺х殑浜洪犺礋杞戒嬌寰楀簲鐢ㄦ弧璐熻嵎榪愯銆?br>        3銆佹潵鑷洃瑙嗗櫒銆佸簲鐢ㄥ拰璐熻澆嫻嬭瘯宸ュ叿鑷韓鐨勬暟鎹悳闆嗐?br>        4銆佹ц兘鏀瑰彉鐨勮窡韙?br>
涓嶈浣庝及鏈鍚庝竴涓渶姹傦紙鎬ц兘璺熻釜錛夌殑閲嶈鎬у洜涓哄鏋滀笉鑳借窡韙ц兘浣犲氨涓嶈兘瀹為檯鐨勭鐞嗛」鐩傛ц兘涓?0-20%鐨勬敼鍠勫鍗曠敤鎴風幆澧冩潵璇村茍娌℃湁浠涔堜笉鍚岋紝浣嗗鏀寔浜哄憳鏉ヨ灝變笉涓鏍蜂簡銆?0%鐨勬敼鍠勬槸闈炲父澶х殑錛岃屼笖閫氳繃璺熻釜鎬ц兘鐨勬敼鍠勶紝浣犲彲浠ユ彁渚涢噸瑕佺殑鍙嶉鍜屾寔緇窡韙?br>铏界劧鎬ц兘璺熻釜寰堥噸瑕侊紝浣嗘湁鏃朵負浜嗕嬌鍚庣畫鐨勬祴璇曟洿鍔犵簿紜屼笉寰椾笉鎶涘純鍏堝墠鐨勬祴璇曠粨鏋溿傚湪鎬ц兘嫻嬭瘯涓紝鏀瑰杽璐熻澆嫻嬭瘯鐨勭簿紜у彲鑳介渶瑕佷慨鏀規ā鎷熺幆澧冿紝鑰岃繖浜涘彉鍖栨槸蹇呴』鐨勶紝閫氳繃鍙樺寲鍓嶅悗鐨勮礋杞芥祴璇曚綘鍙互瑙傚療鍒板叾涓殑杞彉銆?br>

鍙帶鐨勭幆澧?/b>        
鍙? 鎺х殑鐜鏈灝戜篃闇瑕佷袱鍙扮嫭绔嬬殑鏈哄櫒鍜岀涓夊彴鎺у埗鐨勬満鍣ㄣ傚叾涓竴鍙扮敤鏉ョ敓鎴愯礋杞斤紝鍙︿竴鍙頒綔涓烘帶鍒舵満涓庡墠涓鍙板緩绔嬫祴璇曞簲鐢ㄥ茍鎺ュ彈鍙嶉錛岀涓夊彴鏈哄櫒榪愯搴旂敤銆傛 澶栵紝璐熻澆鍜屽簲鐢ㄦ満鍣ㄩ棿鐨勭綉緇滃簲璇ヤ笌灞鍩熺綉鍒嗗紑銆傛帶鍒舵満鎺ュ彈榪愯搴旂敤鏈哄櫒鐨勫弽棣堝鎿嶄綔緋葷粺銆佺‖浠朵嬌鐢ㄧ巼銆佸簲鐢紙鐗瑰埆鏄疺M錛夌殑鐘舵併?br>
璐熻澆妯℃嫙
鏈綺劇‘鐨勬ā鎷熼氬父鐢ㄥ疄闄呯殑鐢ㄦ埛鏁版嵁鍜學EB鏈嶅姟鍣ㄧ鐨勮闂棩蹇椼傚鏋滀綘榪樻病鏈夊疄闄呭竷緗叉垨鑰呯己灝戝疄闄呯殑鐢ㄦ埛鏁版嵁錛屼綘鍙互閫氳繃鏋勯犵被浼肩殑鍦烘櫙鎴栬闂攢鍞拰浜у搧綆$悊鍥㈤槦鎴栧仛涓浜涙湁渚濇嵁鐨勭寽鎯熾傚崗璋冭礋杞芥祴璇曞拰瀹為檯鐢ㄦ埛浣撻獙鏄竴涓寔緇殑榪囩▼銆?br>
鍦? 妯℃嫙涓竴浜涚敤鎴峰満鏅槸蹇呴』鐨勩傚鍦ㄤ竴涓氱敤鍦板潃钖勫簲鐢ㄤ腑錛屼綘搴旇鍖哄垎鏇存柊鍜屾煡璇㈡搷浣溿傚湪鎴戠殑嫻嬭瘯搴旂敤涓璆rinderServlet綾誨彧鏈変竴涓満鏅傚崟鐢? 鎴瘋繛鎺?0嬈¤闂繖涓猻ervlet錛堝湪姣忎竴嬈¤闂棿鏈変竴孌墊殏鍋滐級銆傝櫧鐒惰繖涓簲鐢ㄥ緢灝忥紝鎴戣涓鴻繖鍙互閲嶅涓浜涘父瑙佺殑涓滆タ銆傜敤鎴烽氬父涓嶄細榪炴帴緇欐湇鍔″櫒璇鋒眰鑰? 娌℃湁闂存柇銆傚鏋滄病鏈夐棿鏂紝鎴戜滑鍙兘涓嶈兘寰楀埌鏇寸簿紜殑瀹為檯鐢ㄦ埛涓婇檺銆?br>
涓茶10涓姹傜殑鍙︿竴涓師鍥犳槸瀹為檯搴旂敤涓笉浼氬彧鏈変竴涓狧TTP璇鋒眰銆傚崟涓鑰屽張鍒嗙鐨勮姹傚彲浠ュ獎鍝嶇幆澧冧腑鐨勮澶氬洜绱犮傚Tomcat鏉ヨ錛屼細涓烘瘡涓涓姹傚垱寤轟竴涓細璇濓紝騫朵笖HTTP鍗忚鍏佽涓嶅悓鐨勮姹傞噸鐢ㄨ繛鎺ャ傛垜浼氫慨鏀逛竴涓嬭礋杞芥祴璇曟潵閬垮厤娣鋒揣銆?br>
GrinderServlet綾諱笉浼氭墽琛屼換浣曟帓搴忔搷浣滐紝浣嗚繖涓渶姹傚湪澶ч儴鍒嗗簲鐢ㄤ腑閮藉緢鏅氥傚湪榪欎簺搴旂敤涓紝浣犻渶瑕佸垱寤烘ā鎷熺殑鏁版嵁闆嗗茍涓旂敤浠栦滑鏉ユ瀯閫犵浉鍏崇敤渚嬬殑璐熻澆嫻嬭瘯銆?br>
渚嬪錛屽鏋滅敤渚嬫秹鍙婂埌鐢ㄦ埛鐧誨綍涓涓猈EB搴旂敤錛屼粠鍙兘鐨勭敤鎴峰垪琛ㄤ腑閫夊彇闅忔満鐨勭敤鎴蜂細鍙嬌鐢ㄤ竴涓敤鎴鋒洿綺劇‘銆傚惁鍒欙紝浣犲彲鑳戒笉緇忔剰鍦頒嬌鐢ㄤ簡緋葷粺緙撳瓨鎴栧叾浠栫殑浼樺寲鎴栦竴浜涘井濡欑殑涓滆タ錛岃岃繖浼氫嬌寰楃粨鏋滀笉姝g‘銆?br>
璐熻澆嫻嬭瘯杞歡
璐? 杞芥祴璇曡蔣浠跺彲浠ユ瀯閫犳祴璇曞満鏅茍涓斿鏈嶅姟榪涜璐熻澆嫻嬭瘯銆傛垜浼氬湪涓嬮潰鐨勭ず渚嬩腑浣跨敤OpenSTA嫻嬭瘯杞歡銆傝繖杞歡綆鍗曟槗瀛︼紝緇撴灉涔熷緢瀹規槗瀵煎嚭錛屽茍涓旀敮鎸佸弬鏁板寲 鑴氭湰錛岃繕鍙互鐩戣淇℃伅鐨勫彉鍖栵紝浠栫殑涓昏緙虹偣鏄熀浜嶹indows錛屼絾鍦ㄨ繖鍎夸笉鏄釜闂銆傚綋鐒惰繕鏈夊緢澶氬彲閫夐」濡侫pache鐨凧Meter鍜孧ercury 鐨凩oadRunner銆?br>
The GrinderServlet

鍒楄〃1涓樉紺轟簡GrinderServlet綾伙紝鍒楄〃2涓樉紺轟簡Grinder綾?br>Listing 1

package pub.capart;

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class GrindServlet extends HttpServlet {
   protected void doGet(HttpServletRequest req, HttpServletResponse res)
         throws ServletException, IOException {
      Grinderv1 grinder = Grinderv1.getGrinder();
      long t1 = System.currentTimeMillis();
      grinder.grindCPU(13);
      long t2 = System.currentTimeMillis();

      PrintWriter pw = res.getWriter();
      pw.print("<html>\n< body> \n");
      pw.print("Grind Time = "+(t2-t1));
      pw.print("< body> \n< /html> \n");
   }
}


Listing 2

package pub.capart;

/**
* This is a simple class designed to simulate an application consuming
* CPU, memory, and contending for a synchronization lock.
*/
public class Grinderv1 {
   private static Grinderv1 singleton = new Grinderv1();
   private static final String randstr =
      "this is just a random string that I'm going to add up many many times";

   public static Grinderv1 getGrinder() {
      return singleton;
   }
   public synchronized void grindCPU(int level) {
      StringBuffer sb = new StringBuffer();
      String s = randstr;
      for (int i=0;i<level;++i) {
         sb.append(s);
         s = getReverse(sb.toString());
      }
   }
   public String getReverse(String s) {
      StringBuffer sb = new StringBuffer(s);
      sb = sb.reverse();
      return sb.toString();
   }
}


綾? 寰堢畝鍗曪紝浣嗕粬浠細浜х敓涓や釜寰堝父瑙佺殑闂銆傚拫涓鐪嬬摱棰堝彲鑳界敱grindCPU()鏂規硶鐨勫悓姝ヤ慨楗扮寮曡搗錛屼絾瀹為檯涓婂唴瀛樻秷鑰楁墠鏄湡姝g殑闂鎵鍦ㄣ傚鍥?錛屾垜鐨? 絎竴涓礋杞芥祴璇曟樉紺轟簡甯歌鐨勮礋杞藉彉鍖栥傚湪榪欓噷璐熻澆鍙樺寲寰堥噸瑕佸洜涓轟綘姝e湪妯℃嫙涓涓珮鐨勮礋杞姐傝繖縐嶇儹韜殑鏂瑰紡涔熸洿綺劇‘鍥犱負閬垮厤浜咼SP緙栬瘧寮曡搗鐨勯棶棰樸傛垜閫氬父 涔犳儻浜庡湪榪涜璐熻澆嫻嬭瘯鍓嶅厛榪涜鍗曠敤鎴鋒ā鎷熴?br>
image
Figure 1        

鎴? 鍦ㄨ繖綃囨枃绔犱腑浼氫嬌鐢ㄧ浉鍚岀殑瀹歸噺灝忕粨鍥俱傚湪鎵ц璐熻澆嫻嬭瘯鏃惰繕鏈夋洿澶氱殑鍙敤淇℃伅錛屼絾榪欓噷鍙敤浜嗘湁鐢ㄧ殑閮ㄥ垎銆傛渶涓婇潰鐨勯潰鏉垮寘鍚瘡縐掑畬鎴愮殑璇鋒眰鏁板拰璇鋒眰鏃墮棿淇℃伅銆? 絎簩涓潰鏉垮寘鍚椿鍔ㄧ敤鎴鋒暟鍜屽け璐ョ巼錛屾垜灝嗚秴鏃躲佷笉姝g‘鐨勬湇鍔″櫒搴旂瓟鍜岄暱浜?縐掔殑璇鋒眰璁や負鏄け璐ョ殑銆傜涓変釜闈㈡澘鍖呭惈JVM鍐呭瓨緇熻鍜孋PU浣跨敤鐜囥侰PU鍊? 鏄墍鏈夊鐞嗗櫒鐨勭敤鎴鋒椂闂寸殑騫沖潎鍊鹼紝榪欓噷鎵鏈夌殑嫻嬭瘯鏈哄櫒閮芥槸鍙孋PU鐨勩傚唴瀛樼粺璁″浘鍖呭惈鍨冨溇鍥炴敹琛ㄥ拰姣忕鍨冨溇鍥炴敹鏁般?br>
鍥?涓袱涓渶鏄庢樉鐨勬暟鎹槸50%鐨凜PU浣跨敤鐜囧拰澶ч噺鍐呭瓨浣跨敤鍜岄噴鏀俱備粠鍒楄〃2涓彲浠ョ湅鍑鴻繖涓師鍥犮傚悓姝ヤ慨楗扮瀵艱嚧鎵鏈夎繘紼嬩覆琛屽鐞嗭紝灝卞ソ鍍忓彧鐢ㄤ簡涓涓狢PU錛岃岀畻娉曞鑷村ぇ閲忓唴瀛樻秷鑰楀湪灞閮ㄥ彉閲忎笂銆?br>
閫氳繃CPU鏄釜鍙楅檺鐨勮祫婧愶紝濡傛灉鍦ㄨ繖涓祴璇曚腑鎴戝彲浠ュ畬鍏ㄥ埄鐢ㄥ埌涓や釜CPU鐨勮瘽灝卞彲浠ユ彁楂樹竴鍊嶇殑鎬ц兘銆傚瀮鍦懼洖鏀跺櫒榪愯寰楀姝ら綣佷互鑷翠簬涓嶈兘蹇界暐銆傚湪嫻嬭瘯涓瘡縐掗噴鏀劇殑鍐呭瓨杈懼埌100M錛屽緢鏄劇劧榪欐槸涓檺鍒跺洜绱犮傚け璐ユ暟榪欎箞澶ф槑鏄捐繖涓簲鐢ㄦ槸涓嶅彲鐢ㄧ殑銆?br>
鐩戣

鍦ㄧ敓鎴愬悎鐞嗙殑鐢ㄦ埛璐熻澆鍚庯紝鐩戣宸ュ叿闇瑕佹敹闆嗚繘紼嬬殑榪愯鐘跺喌銆傚湪鎴戠殑嫻嬭瘯鐜涓彲浠ユ敹闆嗗埌鍚勭鏈夌敤鐨勪俊鎭細

1銆?nbsp;       鎵鏈夎綆楁満銆佺綉緇滆澶?br>2銆?nbsp;       絳夌瓑鐨勪嬌鐢ㄧ巼
3銆?nbsp;       JVM鐨勭粺璁℃暟鎹?br>4銆?nbsp;       涓埆JAVA鏂規硶鎵鑺辮垂鐨勬椂闂淬?br>5銆?nbsp;       鏁版嵁搴撴ц兘淇℃伅錛?銆?nbsp;       鍖呮嫭SQL鏌ヨ鐨勭粺璁°?br>7銆?nbsp;       鍏朵粬搴旂敤鐩稿叧鐨勪俊鎭?br>
褰? 鐒惰繖浜涚洃瑙嗕篃浼氬獎鍝嶈礋杞芥祴璇曪紝浣嗗鏋滃獎鍝嶆瘮杈冨皬涔熷彲浠ュ拷鐣ャ傚熀鏈笂濡傛灉鎴戜滑鎯寵幏鍙栨墍鏈変笂闈㈢殑淇℃伅錛岃偗瀹氫細褰卞搷嫻嬭瘯鐨勬ц兘銆備絾濡傛灉涓嶆槸涓嬈¤幏鍙栨墍鏈変俊鎭繕鏄? 鏈夊彲鑳戒繚璇佽礋杞芥祴璇曠殑鏈夋晥鎬с備粎瀵圭壒瀹氱殑鏂規硶璁劇疆瀹氭椂鍣紝浠呰幏鍙栦綆璐熻澆鐨勭‖浠朵俊鎭拰浣庨鐜囧湴鑾峰彇鏍蜂緥鏁版嵁銆傚綋鐒朵笉鍔犺澆鐩戣鍣ㄦ潵鍋氭祴璇曟槸鏈濂界殑錛岀劧鍚庡拰鍔犺澆 鐩戣鍣ㄧ殑嫻嬭瘯鏉ュ仛姣旇緝銆傝櫧鐒舵湁鏃跺欎鏡鍏ュ紡鐩戣鏄釜濂戒富鎰忥紝浣嗗氨涓嶅彲鑳芥湁鐩戣緇撴灉浜嗐?br>

鑾峰彇鎵鏈夌洃瑙嗘暟鎹埌涓涓腑澶帶鍒跺櫒鏉ュ仛鍒嗘瀽鏄? 鏈濂界殑錛屼絾浣跨敤鍔ㄦ佽繍琛屾椂宸ュ叿涔熷彲浠ユ彁渚涙湁鐢ㄧ殑淇℃伅銆備緥濡傦紝鍛戒護琛屽伐鍏峰PS銆乀OP銆乂MSTAT鍙互鎻愪緵UNIX鏈哄櫒鐨勪俊鎭紱鎬ц兘鐩戣鍣ㄥ伐鍏峰彲浠ユ彁渚? WINDOWS鏈哄櫒鐨勪俊鎭紱鑰孴eamQuest, BMC Patrol, SGI's Performance Co-Pilot, and ISM's PerfMan榪欐牱鐨勫伐鍏蜂細鍦ㄦ墍鏈夌殑嫻嬭瘯鐜涓殑鏈哄櫒瀹夎浠g悊騫朵笖灝嗛渶瑕佺殑淇℃伅浼犲洖涓ぎ鎺у埗鏈猴紝榪欐牱灝卞彲浠ユ彁渚涙枃鏈垨鍙鍖栫殑淇℃伅銆傚湪鏈枃涓紝鎴戜嬌鐢ㄥ紑婧? 鐨凱erformance Co-Pilot浣滀負嫻嬭瘯緇熻鐨勫伐鍏楓傛垜鍙戠幇浠栧嫻嬭瘯鐜鐨勫獎鍝嶆渶灝忥紝騫朵笖浠ョ浉瀵圭洿鎺ョ殑鏂瑰紡鏉ユ彁渚涙暟鎹?br>
JAVA 鍒嗘瀽鍣ㄦ彁渚涘緢澶氫俊鎭紝浣嗛氬父瀵硅礋杞芥祴璇曟潵璇村獎鍝嶅お澶ц屾病鏈夊お澶氱殑鐢ㄥ銆傚伐鍏風敋鑷沖彲浠ヨ浣犲湪璐熻澆鏈嶅姟鍣ㄤ笂鍋氫竴浜涘垎鏋愶紝浣嗚繖涔熷緢瀹規槗渚挎祴璇曟棤鏁堛傚湪榪欎簺嫻嬭瘯 涓紝鎴戞縺媧諱簡璇︾粏鐨勫瀮鍦炬敹闆嗗櫒鏉ユ敹闆嗗唴瀛樹俊鎭傛垜涔熶嬌鐢╦console 鍜宩stack宸ュ叿錛堝寘鍚湪J2SE 1.5涓級鏉ユ鏌ラ珮璐熻澆涓嬬殑VM銆傛垜娌℃湁淇濈暀榪欎簺嫻嬭瘯鐢ㄤ緥涓礋杞芥祴璇曠殑緇撴灉鍥犱負鎴戣涓鴻繖浜涙暟鎹笉鏄緢姝g‘銆?br>

鍚屾鐡墮

鍦? 璇婃柇鏈嶅姟鍣ㄩ棶棰樻椂綰跨▼鐨勪俊鎭槸闈炲父鏈夌敤鐨勶紝鐗瑰埆鏄鍚屾涔嬬被鐨勯棶棰樸俲stack宸ュ叿鍙互榪炴帴鍒拌繍琛岀殑榪涚▼騫朵笖淇濆瓨姣忎竴涓嚎紼嬬殑鍫嗘爤淇℃伅銆傚湪UNIX緋葷粺 鍙互鐢ㄤ俊鍙烽噺3鏉ヤ繚瀛樼嚎紼嬬殑鍫嗘爤淇℃伅錛屽湪WINDOWS緋葷粺鐨勬帶鍒跺彴涓彲浠ョ敤Ctrl-Break銆傚湪絎竴欏規祴璇曚腑錛宩stack鎸囧嚭璁稿綰跨▼鍦? grindCPU()鏂規硶涓闃誨銆?br>
浣犲彲浠ュ凡緇忔敞鎰忓埌鍒楄〃2涓璯rindCPU()鏂規硶鐨勫悓姝ヤ慨楗扮瀹為檯涓婂茍涓嶅繀欏匯傛垜鍦ㄥ悗涓欏規祴璇曚腑鍒犻櫎浜嗕粬錛屽鍥?鏄劇ず

image
Figure 2        

鍦ㄥ浘2涓紝浣犱細娉ㄦ剰鍒版ц兘涓嬮檷浜嗐傝櫧鐒舵垜浣跨敤浜嗘洿澶氱殑CPU錛屼絾鍚炲悙閲忓拰澶辮觸鏁伴兘鏇村樊浜嗐傝櫧鐒跺瀮鍦懼洖鏀跺懆鏈熷彉浜嗭紝浣嗘瘡縐掍緷鐒墮渶瑕佸洖鏀?00M銆傛樉鐒舵垜浠繕娌℃湁鎵懼埌涓昏鐨勭摱棰堛?br>闈? 绔熶簤鐨勫悓姝ョ浉瀵逛簬綆鍗曠殑鍑芥暟璋冪敤榪樻槸寰堣垂鏃剁殑銆傜珶浜夋х殑鍚屾灝辨洿璐規椂浜嗭紝鍥犱負闄や簡鍐呭瓨闇瑕佸悓姝ュ錛孷M榪橀渶瑕佺淮鎶ょ瓑寰呯殑綰跨▼銆傚湪榪欑鐘跺喌涓嬶紝榪欎簺浠d環瀹為檯 涓婅灝忎簬鍐呭瓨鐡墮銆傚疄闄呬笂錛岄氳繃娑堥櫎浜嗗悓姝ョ摱棰堬紝VM鍐呭瓨緋葷粺鎵挎媴浜嗘洿澶氱殑鍘嬪姏鏈鍚庡鑷存洿宸殑鍚炲悙閲忥紝鍗充嬌鎴戜嬌鐢ㄤ簡鏇村鐨凜PU銆傛樉鐒舵渶濂界殑鏂瑰紡鏄粠鏈澶? 鐨勭摱棰堝紑濮嬶紝浣嗘湁鏃惰繖涔熶笉鏄緢瀹規槗紜畾鐨勩傚綋鐒訛紝紜繚VM鐨勫唴瀛樺鐞嗚凍澶熸甯鎬篃鏄竴涓ソ鐨勫紑濮嬫柟鍚戙?br>
鍐呭瓨鐡墮

鐜板湪鎴戜細棣栧厛涔熷畾浣嶅唴瀛橀棶棰樸傚垪琛?鏄疓rinderServlet鐨勯噸鏋勭増鏈紝浣跨敤浜哠tringBuffer瀹炰緥銆傚浘3鏄劇ず浜嗘祴璇曠粨鏋溿?br>
Listing 3

package pub.capart;

/**
* This is a simple class designed to simulate an application consuming
* CPU, memory, and contending for a synchronization lock.
*/
public class Grinderv2 {
   private static Grinderv2 singleton = new Grinderv2();
   private static final String randstr =
      "this is just a random string that I'm going to add up many many times";
   private StringBuffer sbuf = new StringBuffer();
   private StringBuffer sbufrev = new StringBuffer();

   public static Grinderv2 getGrinder() {
      return singleton;
   }
   public synchronized void grindCPU(int level) {
      sbufrev.setLength(0);
      sbufrev.append(randstr);
      sbuf.setLength(0);
      for (int i=0;i<level;++i) {
         sbuf.append(sbufrev);
         reverse();
      }
      return sbuf.toString();
   }

   public String getReverse(String s) {
      StringBuffer sb = new StringBuffer(s);
      sb = sb.reverse();
      return sb.toString();
   }
}


image
Figure 3        

閫? 甯擱噸鐢⊿tringBuffer騫朵笉鏄竴涓ソ涓繪剰錛屼絾榪欓噷鎴戝彧鏄負浜嗛噸鐜頒竴浜涘父瑙佺殑闂錛岃屼笉閲忔彁渚涜В鍐蟲柟妗堛傚唴瀛樻暟鎹凡緇忎粠鍥句笂娑堝け浜嗗洜涓烘祴璇曚腑娌℃湁鍨? 鍦懼洖鏀跺櫒榪愯銆傚悶鍚愰噺鎴忓墽鎬х殑澧炲姞鑰孋PU浣跨敤鐜囧張鍥炲埌浜?0%銆傚垪琛?涓嶅彧鏄紭鍖栦簡鍐呭瓨錛屼絾鎴戣涓轟富瑕佷簡鏀瑰杽浜嗚繃搴︾殑鍐呭瓨娑堣椼?br>
媯瑙嗗悓姝ョ摱棰?/span>

鍒楄〃4鍙︿竴涓狦rinderServlet綾葷殑閲嶆瀯鐗堟湰錛屽疄鐜頒簡涓涓皬鐨勮祫婧愭睜銆傚浘4鏄劇ず浜嗘祴璇曠粨鏋溿?br>Listing 4

package pub.capart;

/**

* This is just a dummy class designed to simulate a process consuming
* CPU, memory, and contending for a synchronization lock.
*/
public class Grinderv3 {
   private static Grinderv3 grinders[];
   private static int grinderRoundRobin = 0;
   private static final String randstr =
      "this is just a random string that I'm going to add up many many times";
   private StringBuffer sbuf = new StringBuffer();
   private StringBuffer sbufrev = new StringBuffer();

   static {
      grinders = new Grinderv3[10];
      for (int i=0;i<grinders.length;++i) {
         grinders[i] = new Grinderv3();
      }
   }
   public synchronized static Grinderv3 getGrinder() {
      Grinderv3 g = grinders[grinderRoundRobin];
      grinderRoundRobin = (grinderRoundRobin +1) % grinders.length;
      return g;
   }
   public synchronized void grindCPU(int level) {
      sbufrev.setLength(0);
      sbufrev.append(randstr);
      sbuf.setLength(0);
      for (int i=0;i<level;++i) {
         sbuf.append(sbufrev);
         reverse();
      }
      return sbuf.toString();
   }
   public String getReverse(String s) {
      StringBuffer sb = new StringBuffer(s);
      sb = sb.reverse();
      return sb.toString();
   }
}
  


image
Figure 4        


鍚炲悙閲忔湁涓瀹氱殑澧炲姞錛岃屼笖浣跨敤鏇村皯鐨凜PU璧勬簮銆傜珶浜夊拰闈炵珶浜夋у悓姝ラ兘鏄垂鏃剁殑錛屼絾閫氬父鏈澶х殑鍚屾娑堣楁槸鍑忓皯浜嗙郴緇熺殑鍙幾緙╂с傛垜鐨勮礋杞芥祴璇曚笉鍐嶆弧瓚崇郴緇熺殑闇姹備簡錛屽洜姝ゆ垜澧炲姞浜嗚櫄鎷熺殑鐢ㄦ埛鏁幫紝濡傚浘5 鎵紺恒?br>
image
Figure 5        


鍦ㄥ浘5 涓悶鍚愰噺鍦ㄨ礋杞借揪鍒伴ケ鍜屾椂涓嬮檷浜嗕竴浜涚劧鍚庡湪璐熻澆鍑忓皯鏃跺張鎻愰珮浜嗐傛澶栨敞鎰忓埌嫻嬭瘯浣垮緱CPU浣跨敤鐜囪揪鍒?00%錛岃繖鎰忓懗鐫嫻嬭瘯瓚呰繃浜嗙郴緇熺殑鏈浣沖悶鍚愰噺銆傝礋杞芥祴璇曠殑涓涓駭鍑烘槸鎬ц兘璁″垝錛屽綋搴旂敤鐨勮礋杞借秴榪囦粬鐨勫閲忔椂浼氫駭鐢熸洿浣庣殑鍚炲悙閲忋?br>

姘村鉤鍙幾緙╂?/span>

姘村鉤浼哥緝鍏佽鏇村ぇ鐨勬ц兘錛屼絾騫朵笉涓瀹氭槸璐圭敤鐩稿叧鐨勩傝繍琛屽湪澶氫釜鏈嶅姟鍣ㄤ笂鐨勫簲鐢ㄩ氬父姣旇緝榪愯鍦ㄥ崟涓猇M涓婄殑搴旂敤澶嶆潅銆備絾姘村鉤浼哥緝鏀寔鍦ㄦц兘涓婄殑鏈澶у鍔犮?br>
鍥?鏄垜鐨勬渶鍚庝竴欏規祴璇曠殑緇撴灉銆傛垜宸茬粡鍦ㄤ笁鍙板熀鏈竴鑷寸殑鏈哄櫒涓婁嬌鐢ㄤ簡璐熻澆騫寵 錛屽彧鏄湪鍐呭瓨鍜孋PU閫熷害涓婄◢鏈変笉鍚屻傛葷殑鍚炲悙閲忚楂樹簬涓夊嶇殑鍗曟満緇撴灉錛岃屼笖CPU浠庢潵娌℃湁瀹屽叏鍒╃敤銆傚湪鍥?涓垜鍙樉紺轟簡涓鍙版満鍣ㄤ笂鐨凜PU緇撴灉錛屽叾浠栫殑鏄竴鏍風殑銆?br>
image
Figure 6        


灝忕粨

鎴戞浘緇忚姳浜?涓湀鏉ュ竷緗蹭竴涓鏉傜殑JAVA搴旂敤錛屼絾鍗存病鏈夋椂闂存潵鍋氭ц兘璁″垝銆備絾宸姴鐨勬ц兘浣垮緱鐢ㄦ埛鍚堢害鍑犱箮涓銆傚紑鍙戜漢鍛樹嬌鐢ㄥ垎鏋愬櫒鑺變簡寰堥暱鏃墮棿鎵懼埌鍑犱釜灝忛棶棰樹絾娌℃湁瑙e喅鏍規湰鐨勭摱棰堬紝鑰屼笖琚悗緇殑闂瀹屽叏榪鋒儜浜嗐傛渶鍚庨氳繃璐熻澆嫻嬭瘯鎵懼埌瑙e喅鏂規硶錛屼絾浣犲彲浠ユ兂鍒板叾涓殑澶勫銆?br>
鍙堜竴嬈℃垜紕板緱鏇撮毦鐨勯棶棰橈紝搴旂敤鍙兘杈懼埌鎵棰勬湡鎬ц兘鐨?/100銆備絾閫氳繃鍓嶆湡媯嫻嬪埌鐨勯棶棰樺拰璁よ瘑鍒拌礋杞芥祴璇曠殑蹇呰鎬э紝榪欎釜闂寰堝揩琚В鍐充簡銆傝礋杞芥祴璇曠浉瀵逛簬鏁翠釜杞歡寮鍙戠殑鑺辮垂騫朵笉澶氾紝浣嗗叾鎵褰掗伩鐨勯闄╁氨楂樺浜嗐?br>
鍏充簬浣滆?/b>
Ivan Small鎷ユ湁14騫寸殑杞歡寮鍙戠粡楠屻備粬鍦↙BNL浠庡紑鍙慡upernovae Cosmology Project寮濮嬩粬鐨勮亴涓氱敓娑傝繖涓」鐩槸瀵艱嚧鍙嶉噸鍔涘拰鏃犻檺鎵╁睍瀹囧畽鐞嗚琚彂鐜扮殑涓や釜欏圭洰涔嬩竴銆備粬浠庢宸ヤ綔浜庢暟鎹寲鎺樺拰浼佷笟綰AVA搴旂敤銆傜幇鍦ㄤ粬鏄? nnovative Interfaces鍏徃鐨勯甯蔣浠跺伐紼嬪笀銆?br>
璧勬簮
路javaworld.com:javaworld.com
路Matrix-Java寮鍙戣呯ぞ鍖?http://www.matrix.org.cn/
路JAVA鎬ц兘璋冧紭絎簩鐗?http://www.amazon.com/exec/obidos/ASIN/0596003773/javaworld
路騫跺彂緙栫▼鎶鏈細JAVA騫跺彂緙栫▼絎簩鐗?http://www.amazon.com/exec/obidos/ASIN/0201310090/javaworld
路JAVA緗戠珯鍒嗘瀽錛欽AVA緗戠珯鐨勬ц兘鍒嗘瀽:http://www.amazon.com/exec/obidos/ASIN/0201844540/javaworld
路JAVA鎬ц兘錛氶珮鎬ц兘JAVA騫沖彴璁$畻:http://www.amazon.com/exec/obidos/ASIN/0130161640/javaworld
路JAVA2鎬ц兘鍜屾湳璇寚鍗?http://www.amazon.com/exec/obidos/ASIN/0130142603/javaworld
路BEA WebLogic鏈嶅姟鍣ㄦц兘璋冧紭錛屽寘鍚湁鐢ㄧ殑涓鑸俊鎭細BEA WebLogic鏈嶅姟鍣ㄤ笂J2EE搴旂敤鎬ц兘嫻嬭瘯:http://www.amazon.com/exec/obidos/ASIN/1904284000/javaworld
路JAVA鎬ц兘璋冧紭:http://www.javaperformancetuning.com
路榪囧害鐨凧AVA鍚屾:鈥滆交閲忕駭綰跨▼鈥?http://www-106.ibm.com/developerworks/java/library/j-threads1.html
路璐熻澆鍜屾ц兘嫻嬭瘯宸ュ叿錛歨ttp://www.softwareqatest.com/qatweb1.html#LOAD

Dion 2005-12-02 21:59 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 猫咪www免费人成网站| 麻豆91免费视频| 暖暖免费在线中文日本| 中文字幕亚洲日本岛国片| 美女视频黄a视频全免费网站色| 亚洲尹人香蕉网在线视颅| 在线免费播放一级毛片| 亚洲日本乱码在线观看| 久别的草原电视剧免费观看| 亚洲AV电影院在线观看| 成在人线av无码免费高潮喷水| 18女人腿打开无遮掩免费| 久久亚洲日韩精品一区二区三区| 亚洲人AV在线无码影院观看| 夜夜爽免费888视频| 337p日本欧洲亚洲大胆人人| 在线视频免费观看www动漫| 国产亚洲精品2021自在线| 亚洲国产婷婷综合在线精品| 中文字幕免费在线看线人动作大片| 最新欧洲大片免费在线| 亚洲人成色777777老人头| 免费a级毛片无码av| 国产免费一区二区三区在线观看| 男男AV纯肉无码免费播放无码| 亚洲人成图片小说网站| 99久久综合精品免费| 亚洲欧美国产精品专区久久| 免费A级毛片无码A| 18禁超污无遮挡无码免费网站| 亚洲成av人在片观看| 中文字幕乱码系列免费| 亚洲精品偷拍无码不卡av| 韩国二级毛片免费播放| 精品免费视在线观看| 亚洲性无码AV中文字幕| 国产精品亚洲综合专区片高清久久久| 亚洲 暴爽 AV人人爽日日碰| 在线免费观看国产视频| 久久美女网站免费| 久久水蜜桃亚洲AV无码精品|