Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÐÔÄÜ·ÖÎöϵÁСª¡ªÐ¡ÃüÁî±£Ö¤´óÐÔÄÜ
 
×÷Õߣº³Ì³¬ À´Ô´£º¼«¿ÍÍ·Ìõ ·¢²¼ÓÚ£º 2016-8-12
  2583  次浏览      27
 

Ò»¡¢¿ª·¢ÕßµÄ×Ô²âÀûÆ÷-HprofÃüÁî

1. ʾÀýÑÝʾ

Àý×Ó³ÌÐò£º

 
 /**

* PROJECT_NAME: test

* DATE: 16/7/22

* CREATE BY: chao.cheng

**/

public class HProfTest {

public void slowMethod() {

try {

Thread.sleep(1000);

} catch (Exception e) {

e.printStackTrace();

}

}

try {

Thread.sleep(10000);

} catch (Exception e) {

e.printStackTrace();

}

/**

* PROJECT_NAME: test

* DATE: 16/7/22

* CREATE BY: chao.cheng

**/

public class HProfTest {

public void slowMethod() {

try {

Thread.sleep(1000);

} catch (Exception e) {

e.printStackTrace();

}

}

public void slowerMethod() {

try {

Thread.sleep(10000);

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

HProfTest test = new HProfTest();

test.slowerMethod();

test.slowMethod();

}

}

}

public static void main(String[] args) {

HProfTest test = new HProfTest();

test.slowerMethod();

test.slowMethod();

}

}

×¢£ºÕâÊÇÒ»¶Î²âÊÔ´úÂëͨ¹ýsleep·½·¨½øÐÐÑÓʱ£¬ÔÚ³ÌÐòÔËÐйý³ÌÖкÜÂý£¬ÎÒÏëÖªµÀµ½µ×ÊÇÄĶγÌÐòÓ°ÏìµÄÕûÌåÐÔÄÜÄØ£¿

ÎÒÔÚÕâ¸öjava³ÌÐòÖУ¬¼ÓÁËÈçÏÂÔËÐвÎÊý£º

-agentlib:hprof=cpu=times,interval=10

/*

times£ºjavaº¯ÊýµÄÖ´ÐÐʱ¼ä

hprof=cpuÊÇÕë¶Ôcpuͳ¼ÆÊ±¼ä

interval=10 ²ÉÑù10´Î

*/

ÔÙ´ÎÔËÐÐÕâ¶Î³ÌÐòÏÔʾÈçÏÂͼ£º

Õâʱºò»¹·¢ÏÖÔÚ¹¤³ÌĿ¼ÀïÃæ£¬¶àÁËÒ»¸öÎı¾Îļþjava.hprof.txt£¬ÈçÏÂͼËùʾ£º

ÄÚÈÝÈçÏ£º

CPU TIME (ms) BEGIN (total = 11542) Fri Jul 22 11:00:34 2016

rank self accum count trace method

2 8.66% 95.31% 1 303423 com.test.HProfTest.slowMethod

3 0.25% 95.56% 36 300745 java.util.zip.ZipFile.<init>

4 0.20% 95.76% 36 300434 java.lang.String.equals

5 0.13% 95.89% 14 301138 java.net.URLStreamHandler.parseURL

6 0.11% 96.01% 6 301339 java.net.URLClassLoader$1.run

7 0.10% 96.10% 14 301124 java.lang.String.<init>

8 0.09% 96.19% 3407 300355 java.lang.String.charAt

9 0.08% 96.27% 36 300443 java.io.UnixFileSystem.normalize

×¢£ºÍ¨¹ýÉÏÃæÄÚÈÝ¿ÉÒÔ¿´µ½£¬ÄĸöÀàµÄ·½·¨Ö´ÐÐʱ¼ä³¤£¬ºÄ·ÑÁËCPUʱ¼ä£¬Ò»Ä¿ÁËÈ»£¬·½±ãÎÒÃÇ¿ìËÙ¶¨Î»ÎÊÌâ¡£

2. ÃüÁîµÄ¾ßÌå½²½â

hprof²»ÊǶÀÁ¢µÄ¼à¿Ø¹¤¾ß£¬ËüÖ»ÊÇÒ»¸öjava agent¹¤¾ß£¬Ëü¿ÉÒÔÓÃÔÚ¼à¿ØJavaÓ¦ÓóÌÐòÔÚÔËÐÐʱµÄCPUÐÅÏ¢ºÍ¶ÑÄÚÈÝ£¬Ê¹ÓÃjava -agentlib:hprof=helpÃüÁî¿ÉÒԲ鿴hprofµÄʹÓÃÎĵµ¡£

ͨ¹ýÉÏͼ¿ÉÒÔ¿´µ½Õâ¸ö¹¤¾ß·Ç³£Ç¿´ó£¬¿ÉÒÔͳ¼ÆµÄ¶«Î÷ºÜ¶à£¬ÉÏÃæµÄÀý×Óͳ¼ÆµÄÊÇCPUʱ¼ä£¬Í¬ÑùÎÒÃÇ»¹¿ÉÒÔͳ¼ÆÄÚ´æÕ¼ÓõÄdumpÐÅÏ¢¡£

È磺-agentlib:hprof=heap,format=b,file=/test.hprof

Õâ¸öhprofС¹¤¾ß£¬·Ç³£·½±ãÎÒÃÇÔÚÓÃJUnit×Ô²â´úÂëµÄʱºò½áºÏʹÓ㬼ȿÉÒÔ½â¾öÒµÎñÉϵÄBUG£¬ÓÖÄܹ»ÔÚÒ»¶¨³ÌÐòÉϽâ¾ö¿É·¢ÏÖµÄÐÔÄÜÎÊÌ⣬·Ç³£ÊµÓá£

¶þ¡¢ÐÔÄÜÅŲ鹤¾ß-pidstat

1. ʾÀýÑÝʾ

Àý×Ó³ÌÐò£º

/**

* PROJECT_NAME: test

* DATE: 16/7/22

* CREATE BY: chao.cheng

**/

public class PidstatTest {

public static class PidstatTask implements Runnable {

public void run() {

while(true) {

double value = Math.random() * Math.random();

}

}

}

public static class LazyTask implements Runnable {

public void run() {

try {

while (true) {

Thread.sleep(1000);

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

public static void main(String[] args) {

new Thread(new PidstatTask()).start();

new Thread(new LazyTask()).start();

new Thread(new LazyTask()).start();

}

}

×¢£ºÕâÊÇÒ»¶Î²âÊÔÓõÄjava³ÌÐò£¬½«ÆäÔËÐÐÆðÀ´¡£

ÔÚÃüÁîÐÐÊäÈ룺

 
pidstat -p 843 1 3 -u -t

/*

-u£º´ú±í¶ÔcpuʹÓÃÂÊµÄ¼à¿Ø

²ÎÊý1 3£º±íʾÿÃë²ÉÑùÒ»´Î£¬Ò»¹²Èý´Î

-t£º½«¼à¿Ø¼¶±ðϸ»¯µ½Ïß³Ì

*/

ÔËÐÐÃüÁîÏÔʾÈçÏÂͼËùʾ£º

×¢£ºÆäʵÖÐTID¾ÍÊÇÏß³ÌID£¬%usr±íʾÓû§Ïß³ÌʹÓÃÂÊ£¬´ÓͼÖпÉÒÔ¿´µ½855Õâ¸öÏß³ÌCPUÕ¼Ó÷dz£¸ß¡£

ÔÙÊäÈëÈçÏÂÃüÁ

 jstack -l 843 > /tmp/testlog.txt

²é¿´testlog.txtÏÔʾÈçϲ¿·ÖÄÚÈÝ£º

×¢£ºÎÒÃǹØ×¢µÄÊÇÈÕÖ¾ÎļþµÄNID×ֶΣ¬Ëü¶ÔÓ¦µÄ¾ÍÊÇÎÒÃÇÉÏÃæËµµÄTID£¬NIDÊÇTIDµÄ16½øÖƱíʾ£¬½«ÉÏÃæµÄÊ®½øÖÆ855ת»»³ÉÊ®Áù½øÖÆÎª357£¬ÔÚÈÕÖ¾ÖнøÐÐËÑË÷¿´µ½ÈçÏÂÄÚÈÝ£º

 
"Thread-0" prio=10 tid=0x00007f7d90103800 nid=0x357 runnable [0x00007f7d943d5000]

java.lang.Thread.State: RUNNABLE

at PidstatTest$PidstatTask.run(PidstatTest.java:13)

at java.lang.Thread.run(Thread.java:722)

Locked ownable synchronizers:

- None

ÒÔ´Ë¿ÉÒÔÍÆ¶Ï³öÓÐÐÔÄÜÆ¿¾±µÄ³ÌÐòµã¡£

2. pidstat¾ßÌåÃüÁîÏê½â

pidstatÊÇÒ»¸ö¹¦Äܷdz£Ç¿´óµÄÐÔÄܼà²â¹¤¾ß£¬ËûÊÇSysstatµÄ×é¼þÖ®Ò»£¬¿ÉÒÔ´Óhttp://sebastien.godard.pagesperso-orange.fr/download.html ½øÐÐÏÂÔØ£¬ÏÂÔØºó¿ÉÒÔͨ¹ý./configureµÈÃüÁî½øÐа²×°£¬Õâ¸öÃüÁîµÄÇ¿´óÖ®´¦ÔÚÓÚ²»½ö¿ÉÒÔ¼à¿Ø½ø³ÌµÄÐÔÄÜÇé¿ö£¬Ò²¿ÉÒÔ¼à¿ØÏ̵߳ÄÐÔÄÜÇé¿ö¡£

pidstat¼à¿ØCPU³£ÓÃÏÔʾ×Ö¶ÎÄÚÈÝÈçÏ£º

1¡¢PID - ±»¼à¿ØµÄÈÎÎñµÄ½ø³ÌºÅ

2¡¢%usr - µ±ÔÚÓû§²ãÖ´ÐУ¨Ó¦ÓóÌÐò£©Ê±Õâ¸öÈÎÎñµÄcpuʹÓÃÂÊ£¬ºÍ nice ÓÅÏȼ¶Î޹ء£×¢ÒâÕâ¸ö×ֶμÆËãµÄcpuʱ¼ä²»°üÀ¨ÔÚÐéÄâ´¦ÀíÆ÷Öл¨È¥µÄʱ¼ä¡£

3¡¢%system - Õâ¸öÈÎÎñÔÚϵͳ²ãʹÓÃʱµÄcpuʹÓÃÂÊ¡£

4¡¢%guest - ÈÎÎñ»¨·ÑÔÚÐéÄâ»úÉϵÄcpuʹÓÃÂÊ£¨ÔËÐÐÔÚÐéÄâ´¦ÀíÆ÷£©¡£

5¡¢%CPU - ÈÎÎñ×ܵÄcpuʹÓÃÂÊ¡£ÔÚSMP»·¾³£¨¶à´¦ÀíÆ÷£©ÖУ¬Èç¹ûÔÚÃüÁîÐÐÖÐÊäÈë-I²ÎÊýµÄ»°£¬cpuʹÓÃÂÊ»á³ýÒÔÄãµÄcpuÊýÁ¿¡£

6¡¢CPU - ÕýÔÚÔËÐÐÕâ¸öÈÎÎñµÄ´¦ÀíÆ÷±àºÅ¡£

7¡¢Command - Õâ¸öÈÎÎñµÄÃüÁîÃû³Æ¡£

pidstat¼à¿ØIO³£ÓõÄ×Ö¶ÎÏÔʾÄÚÈÝÈçÏ£º

1¡¢kB_rd/s - ÈÎÎñ´ÓÓ²ÅÌÉϵĶÁÈ¡ËÙ¶È£¨kb£©

2¡¢kB_wr/s - ÈÎÎñÏòÓ²ÅÌÖеÄдÈëËÙ¶È£¨kb£©

3¡¢kB_ccwr/s - ÈÎÎñдÈë´ÅÅ̱»È¡ÏûµÄËÙÂÊ£¨kb£©

Èý¡¢Ò»¸öÄÚ´æÒç³ö°¸Àý·ÖÎö

1. ÄÚ´æÒç³öÏÖÏó

ϵͳ¹²ÓÐ8̨·þÎñÆ÷£¬Ã¿´ÎËæ»úÖ»ÓÐһ̨·þÎñÆ÷±¨java.lang.OutOfMemoryError: GC overhead limit exceeded´íÎó£¬È»ºó½Óמͱ¨ÄÚ´æÒç³ö´íÎójava.lang.OutOfMemoryError: Java heap space¡£

2. ÀíÂÛÖ§³Å

ÎÒÃÇÏȽâÊÍÒ»ÏÂʲôÊÇGC overhead limit exceeded´íÎó¡£

GC overhead limt exceed¼ì²éÊÇHotspot VM 1.6¶¨ÒåµÄÒ»¸ö²ßÂÔ£¬Í¨¹ýͳ¼ÆGCʱ¼äÀ´Ô¤²âÊÇ·ñÒªOOMÁË£¬ÌáǰÅ׳öÒì³££¬·ÀÖ¹OOM·¢Éú¡£Sun ¹Ù·½¶Ô´ËµÄ¶¨ÒåÊÇ£º¡°²¢ÐÐ/²¢·¢»ØÊÕÆ÷ÔÚGC»ØÊÕʱ¼ä¹ý³¤Ê±»áÅ׳öOutOfMemroyError¡£¹ý³¤µÄ¶¨ÒåÊÇ£¬³¬¹ý98%µÄʱ¼äÓÃÀ´×öGC²¢ÇÒ»ØÊÕÁ˲»µ½2%µÄ¶ÑÄÚ´æ¡£ÓÃÀ´±ÜÃâÄÚ´æ¹ýСÔì³ÉÓ¦Óò»ÄÜÕý³£¹¤×÷¡£

¿ÉÒÔ¿´µ½µ±¶ÑÖеĶÔÏóÎÞ·¨±»ÊջصÄʱºò£¬¾ÍÌáǰÓö¾¯±¨³öÕâÑùµÄ´íÎ󣬴ËʱÄڴ沢ûÓÐÒç³ö£¬Õâ¸öÌØÐÔÔÚJDKÖÐÊÇĬÈÏÌí¼ÓµÄ¡£

3. DUMPÎļþ·ÖÎö

½«dumpÎļþµ¼ÈëVisualVM¹¤¾ßÖУ¬ÈçÏÂͼËùʾ£º

ͨ¹ýÉÏͼ¿ÉÒÔ¿´³öÀà½á¹¹Í¼ÖУ¬×îÕ¼ÓÃÄÚ´æµÄÊÇchar[]£¬LinkedHashMapºÍStringÈýÏî¡£µ«ÊÇÕâÈýÏîµÄʵÀýÊý²¢Ã»ÓÐÕ¼Âú£¬¿´Ñù×Ó²»»áÄÚ´æÒç³ö£¬Ôõô²ÅÄܾßÌå·ÖÎöÄØ£¿Ô­Òò¾ÍÔÚÓÚGC overhead limt exceed£¬Õâ¸ö´í²¢²»»áÔÚÄÚ´æÕæÕýÒç³ö²Å»á±¨£¬ËùÒÔͨ¹ýdumpÎļþ£¬ÎÒÃÇÖ»ÄÜ×Ô¼ºÈ¥ÅжϷÖÎö£¬ÄÄЩÏîÓпÉÄÜ»áÔì³ÉÒç³ö£¬ÎÒÃǽøÈëchar[]Ïî¾ßÌåÀ´¿´£¬»á·¢ÏÖÀïÃæÓкܶàhessianµÄurl×Ö·û±»»º´æ£¬Í¨¹ýÅųý³ÌÐò¿ÉÒÔ¿´µ½ÓÉÓڵײãÖмä¼þ³ÌÐòΪÁËÌá¸ß¡°ÐÔÄÜ¡±£¬½«Ã¿´Îµ÷ÓõÄurl¶¼»º´æÆðÀ´£¬²»ÓÃÿ´Î¶¼Éú³É£¬µ«Ã»ÓÐÏàÓ¦»º´æÊͷŲÙ×÷£¬ÓÚÊÇÔì³ÉÁË´óÁ¿×Ö·û¶ÔÏó³¤ÆÚ³ÖÓдӶø±¨´í£¬Ôڴ˾Ͳ»½ØÍ¼À´¾ßÌå¿´´úÂë£¬Éæ¼°Ò»Ð©¹«Ë¾ÐÅÏ¢¡£

4. ÎÊÌâ½â¾ö·½°¸

¿ÉÒÔÌí¼ÓJVMµÄÆô¶¯²ÎÊýÀ´È¥µôÌáǰ±¨¾¯ÏÞÖÆ£º-XX:-UseGCOverheadLimit£¬ÓÚÆäÈÃÓ¦ÓÃÿ´Î¶¼Ìáǰ±¨¾¯£¬»¹²»ÈçÈñ©·çÓêÀ´µÄ¸üÃÍЩ£¬Ö±½ÓÄÚ´æÒç³ö£¬ÒòΪ·þÎñÆ÷ÊǼ¯Èº£¬ÆäÖÐһ̨¹Òµô²»»áÓ°ÏìÏßÉÏÕý³£½»Ò×£¬Í¬Ê±Ò²·½±ãÎÒÃÇͨ¹ýÈÕÖ¾À´ÅÅ´í¡£

ͨ¹ýÅŲé³ÌÐò£¬¼ì²éϵͳÊÇ·ñÓÐʹÓôóÄÚ´æµÄ´úÂë²»ÊÍ·Å»òËÀÑ­»·¡£

   
2583 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

Óû§¹ÊÊÂÓëÓÃÀý
½»»¥Éè¼ÆÊ¦Ö®¾«Òæ»­²¼Æª
Êý¾Ý·ÖÎöÖ®Óû§»­Ïñ·½·¨Óëʵ¼ù
ÈçºÎ¿ìËÙ½¨Á¢Óû§Ä£ÐÍ£¿
 
Ïà¹ØÎĵµ

Óû§½çÃæÉè¼Æ
¸øÆóÒµ×ö´óÊý¾Ý¾«×¼Óû§»­Ïñ
Óû§ÌåÑéºÍ½»»¥Éè¼Æ
´óÊý¾ÝϵÄÓû§»­Ïñ
Ïà¹Ø¿Î³Ì

Óû§ÌåÑé&½çÃæÉè¼Æ
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À
Óû§Ñо¿ÓëÓû§½¨Ä£
Óû§ÌåÑéµÄÈí¼þUIÉè¼Æ×î¼Ñʵ¼ù
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

´ÓÊÖ»úµÇÂ¼Ò³ÃæÉè¼ÆÏëµ½µÄ
ÈçºÎ°ÑÎÞÒâʶÒýÈë½»»¥Éè¼ÆÖÐ
½»»¥Éè¼ÆµÄÕæÏà
µ±ÊÓ¾õÉè¼ÆÊ¦ÓöÉϲúÆ·¾­Àí
ÊÖ»ú½»»¥Éè¼ÆÔ­Ôò
Óû§ÌåÑéÖ®ÍøÒ³°å¿éÉè¼Æ

ÒÔÓû§ÎªÖÐÐĵÄÉè¼Æ
¿ÉÓÃÐÔÆÀ¹À
Desktop¼°Web-basedÊÓ¾õÉè¼Æ
ÈÏÖªÔ­ÀíÓëÉè¼ÆÓ¦ÓÃ
ÊÖ»úÓû§½çÃæÉè¼Æ

±±¾© ÒÔÓû§ÎªÖÐÐĵĽçÃæÉè¼Æ
±±¾© Óû§ÌåÑé& ½çÃæÉè¼Æ
ÉϺ£ »ªÎª Óû§ÌåÑé& ½çÃæÉè¼Æ
ÉîÛÚ Óû§ÌåÑé& ½çÃæÉè¼Æ
°®Á¢ÐÅ ÒÔÓû§ÎªÖÐÐĵÄÉè¼Æ
±±¾© Óû§ÌåÑéÓë½çÃæÉè¼Æ
¸£ÖÝ ÒÔÓû§ÎªÖÐÐĵĽçÃæÉè¼Æ