ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>成人免费视频app,国产福利免费在线观看,视频一区二区三区中文字幕http://www.aygfsteel.com/MrZhujia/category/43095.html˜q½å¯»¿U‘æŠ€å‰æ²¿zh-cnSat, 17 Jul 2010 16:34:28 GMTSat, 17 Jul 2010 16:34:28 GMT60OpenJDK的完¾ŸŽä¸­æ–‡æ˜¾½C?/title><link>http://www.aygfsteel.com/MrZhujia/archive/2010/07/11/325816.html</link><dc:creator>¼œå˜‰</dc:creator><author>¼œå˜‰</author><pubDate>Sun, 11 Jul 2010 15:51:00 GMT</pubDate><guid>http://www.aygfsteel.com/MrZhujia/archive/2010/07/11/325816.html</guid><wfw:comment>http://www.aygfsteel.com/MrZhujia/comments/325816.html</wfw:comment><comments>http://www.aygfsteel.com/MrZhujia/archive/2010/07/11/325816.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/MrZhujia/comments/commentRss/325816.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/MrZhujia/services/trackbacks/325816.html</trackback:ping><description><![CDATA[     摘è¦: export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on'  <a href='http://www.aygfsteel.com/MrZhujia/archive/2010/07/11/325816.html'>阅读全文</a><img src ="http://www.aygfsteel.com/MrZhujia/aggbug/325816.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/MrZhujia/" target="_blank">¼œå˜‰</a> 2010-07-11 23:51 <a href="http://www.aygfsteel.com/MrZhujia/archive/2010/07/11/325816.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>linux下java GUI中文字体昄¡¤ºé—®é¢˜http://www.aygfsteel.com/MrZhujia/archive/2010/07/10/325712.html¼œå˜‰¼œå˜‰Sat, 10 Jul 2010 01:35:00 GMThttp://www.aygfsteel.com/MrZhujia/archive/2010/07/10/325712.htmlhttp://www.aygfsteel.com/MrZhujia/comments/325712.htmlhttp://www.aygfsteel.com/MrZhujia/archive/2010/07/10/325712.html#Feedback0http://www.aygfsteel.com/MrZhujia/comments/commentRss/325712.htmlhttp://www.aygfsteel.com/MrZhujia/services/trackbacks/325712.html$cd /usr/share/fonts/truetype/arphic/
$sudo ln -s uming.ttc uming.ttf  é˜…读全文

¼œå˜‰ 2010-07-10 09:35 å‘表评论
]]>
Apache Log4j 学习½W”è®°http://www.aygfsteel.com/MrZhujia/archive/2010/05/15/321033.html¼œå˜‰¼œå˜‰Sat, 15 May 2010 05:19:00 GMThttp://www.aygfsteel.com/MrZhujia/archive/2010/05/15/321033.htmlhttp://www.aygfsteel.com/MrZhujia/comments/321033.htmlhttp://www.aygfsteel.com/MrZhujia/archive/2010/05/15/321033.html#Feedback0http://www.aygfsteel.com/MrZhujia/comments/commentRss/321033.htmlhttp://www.aygfsteel.com/MrZhujia/services/trackbacks/321033.html阅读全文

¼œå˜‰ 2010-05-15 13:19 å‘表评论
]]>
How to write clone methodhttp://www.aygfsteel.com/MrZhujia/archive/2010/04/21/318938.html¼œå˜‰¼œå˜‰Wed, 21 Apr 2010 02:51:00 GMThttp://www.aygfsteel.com/MrZhujia/archive/2010/04/21/318938.htmlhttp://www.aygfsteel.com/MrZhujia/comments/318938.htmlhttp://www.aygfsteel.com/MrZhujia/archive/2010/04/21/318938.html#Feedback0http://www.aygfsteel.com/MrZhujia/comments/commentRss/318938.htmlhttp://www.aygfsteel.com/MrZhujia/services/trackbacks/318938.html1.Implements Cloneable interface
2.Override the clone method
2.1 Make the clone method to public method
2.2 Call super.clone() to produce the new object
2.3 Clone members  é˜…读全文

¼œå˜‰ 2010-04-21 10:51 å‘表评论
]]>
Linux下JDK路径的酾|?/title><link>http://www.aygfsteel.com/MrZhujia/archive/2009/11/15/302393.html</link><dc:creator>¼œå˜‰</dc:creator><author>¼œå˜‰</author><pubDate>Sun, 15 Nov 2009 02:18:00 GMT</pubDate><guid>http://www.aygfsteel.com/MrZhujia/archive/2009/11/15/302393.html</guid><wfw:comment>http://www.aygfsteel.com/MrZhujia/comments/302393.html</wfw:comment><comments>http://www.aygfsteel.com/MrZhujia/archive/2009/11/15/302393.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/MrZhujia/comments/commentRss/302393.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/MrZhujia/services/trackbacks/302393.html</trackback:ping><description><![CDATA[     摘è¦:   <a href='http://www.aygfsteel.com/MrZhujia/archive/2009/11/15/302393.html'>阅读全文</a><img src ="http://www.aygfsteel.com/MrZhujia/aggbug/302393.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/MrZhujia/" target="_blank">¼œå˜‰</a> 2009-11-15 10:18 <a href="http://www.aygfsteel.com/MrZhujia/archive/2009/11/15/302393.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>JVM的垃圑֛žæ”¶æœºåˆ¶è¯¦è§£å’Œè°ƒä¼˜http://www.aygfsteel.com/MrZhujia/archive/2009/10/09/297607.html¼œå˜‰¼œå˜‰Fri, 09 Oct 2009 14:52:00 GMThttp://www.aygfsteel.com/MrZhujia/archive/2009/10/09/297607.htmlhttp://www.aygfsteel.com/MrZhujia/comments/297607.htmlhttp://www.aygfsteel.com/MrZhujia/archive/2009/10/09/297607.html#Feedback0http://www.aygfsteel.com/MrZhujia/comments/commentRss/297607.htmlhttp://www.aygfsteel.com/MrZhujia/services/trackbacks/297607.html原文地å€:
  http://www.matrix.org.cn/resource/article/43/43769_JVM_GC_PDM.html

1.JVM�/span>gc概述

  gcå›_žƒåœ¾æ”¶é›†æœºåˆ¶æ˜¯æŒ?/span>jvm用于释放那些ä¸å†ä½¿ç”¨çš„对象所å ç”¨çš„内存ã€?/span>java语言òq¶ä¸è¦æ±‚jvmæœ?/span>gcåQŒä¹Ÿæ²¡æœ‰è§„定gc如何工作。丘q‡å¸¸ç”¨çš„jvm都有gcåQŒè€Œä¸”大多æ•?/span>gc都ä‹É用类似的½Ž—法½Ž¡ç†å†…存和执行收集æ“作ã€?/span>

  在充分ç†è§£äº†åžƒåœ¾æ”‰™›†½Ž—法和执行过½E‹åŽåQŒæ‰èƒ½æœ‰æ•ˆçš„优化它的性能。有些垃圾收集专用于ç‰ÒŽ®Šçš„应用程åºã€‚比如,实时应用½E‹åºä¸»è¦æ˜¯äؓ了é¿å…垃圾收集中断,而大多数OLTP应用½E‹åºåˆ™æ³¨é‡æ•´ä½“效率。ç†è§£äº†åº”用½E‹åºçš„工作负è·å’Œjvm支æŒçš„垃圾收集算法,便å¯ä»¥è¿›è¡Œä¼˜åŒ–é…¾|®åžƒåœ¾æ”¶é›†å™¨ã€?/span>

  垃圾攉™›†çš„目的在于清除ä¸å†ä‹É用的对象ã€?/span>gc通过¼‹®å®šå¯¹è±¡æ˜¯å¦è¢«æ´»åŠ¨å¯¹è±¡å¼•ç”¨æ¥¼‹®å®šæ˜¯å¦æ”‰™›†è¯¥å¯¹è±¡ã€?/span>gc首先è¦åˆ¤æ–­è¯¥å¯¹è±¡æ˜¯å¦æ˜¯æ—¶å€™å¯ä»¥æ”¶é›†ã€‚两¿U常用的æ–ÒŽ³•是引用计数和对象引用é历ã€?/span>

1.1.
引用计数
  引用计数存储对特定对象的所有引用数åQŒä¹Ÿž®±æ˜¯è¯ß_¼Œå½“应用程åºåˆ›å»ºå¼•用以åŠå¼•ç”¨è¶…å‡ø™Œƒå›´æ—¶åQ?/span>jvm必须适当增å‡å¼•用数。当æŸå¯¹è±¡çš„引用æ•îCØ“0æ—Óž¼Œä¾¿å¯ä»¥è¿›è¡Œåžƒåœ¾æ”¶é›†ã€?/span>

1.2.
对象引用é历
  早期çš?/span>jvm使用引用计数åQŒçŽ°åœ¨å¤§å¤šæ•°jvm采用对象引用é历。对象引用é历从一¾l„å¯¹è±¡å¼€å§‹ï¼Œæ²¿ç€æ•´ä¸ªå¯¹è±¡å›¾ä¸Šçš„æ¯æ¡é“¾æŽ¥ï¼Œé€’å½’¼‹®å®šå¯åˆ°è¾¾ï¼ˆreachableåQ‰çš„对象。如果æŸå¯¹è±¡ä¸èƒ½ä»Žè¿™äº›æ ¹å¯¹è±¡çš„一个(臛_°‘一个)到达åQŒåˆ™ž®†å®ƒä½œäؓ垃圾攉™›†ã€‚在对象é历阶段åQ?/span>gcå¿…é¡»è®îC½å“ªäº›å¯¹è±¡å¯ä»¥åˆ°è¾¾åQŒä»¥ä¾¿åˆ é™¤ä¸å¯åˆ°è¾„¡š„对象åQŒè¿™¿UîCؓ标记åQ?/span>markingåQ‰å¯¹è±¡ã€?/span>

  下一步,gcè¦åˆ é™¤ä¸å¯åˆ°è¾„¡š„对象。删除时åQŒæœ‰äº?/span>gcåªæ˜¯½Ž€å•的扫æå †æ ˆåQŒåˆ é™¤æœªæ ‡è®°çš„对象,òq‰™‡Šæ”‘Ö®ƒä»¬çš„å†…å­˜ä»¥ç”Ÿæˆæ–°çš„对象,˜q™å«åšæ¸…é™¤ï¼ˆsweepingåQ‰ã€‚è¿™¿U方法的问题在于内存会分æˆå¥½å¤šå°ŒDµï¼Œè€Œå®ƒä»¬ä¸­‘³ä»¥ç”¨äºŽæ–°çš„对象åQŒä½†æ˜¯ç»„åˆè“væ¥å´å¾ˆå¤§ã€‚因此,许多gcå¯ä»¥é‡æ–°¾l„织内存中的对象åQŒåƈ˜q›è¡ŒåŽ‹ç¾ƒåQ?/span>compactåQ‰ï¼Œå½¢æˆå¯åˆ©ç”¨çš„½Iºé—´ã€?/span>

  为此åQ?/span>gc需è¦åœæ­¢å…¶ä»–çš„‹zÕdŠ¨ã€‚è¿™¿U方法æ„å‘³ç€æ‰€æœ‰ä¸Žåº”用½E‹åºç›¸å…³çš„å·¥ä½œåœæ­¢ï¼Œåªæœ‰gc˜q行。结果,在å“应期间增å‡äº†è®¸å¤šæ·äh‚è¯äh±‚。å¦å¤–ï¼Œæ›´å¤æ‚çš„gc䏿–­å¢žåŠ æˆ–åŒæ—¶è¿è¡Œä»¥å‡å°‘或者清除应用程åºçš„中断。有çš?/span>gc使用å•线½E‹å®Œæˆè¿™™å¹å·¥ä½œï¼Œæœ‰çš„则采用多¾U¿ç¨‹ä»¥å¢žåŠ æ•ˆçŽ‡ã€?/span>


2.
几ç§åžƒåœ¾å›žæ”¶æœºåˆ¶

2.1.
标记åQ清除收集器
  ˜q™ç§æ”‰™›†å™¨é¦–å…ˆé历对象图òq¶æ ‡è®°å¯åˆ°è¾¾çš„å¯¹è±¡ï¼Œç„¶åŽæ‰«æå †æ ˆä»¥å¯»æ‰¾æœªæ ‡è®°å¯¹è±¡òq‰™‡Šæ”‘Ö®ƒä»¬çš„内存。这¿U收集器一般ä‹É用啾U¿ç¨‹å·¥ä½œòq¶åœæ­¢å…¶ä»–æ“作ã€?/span>

2.2.
标记åQ压¾~©æ”¶é›†å™¨
ã€€ã€€æœ‰æ—¶ä¹Ÿå«æ ‡è®°åQ清除ï¼åŽ‹ç¾ƒæ”‰™›†å™¨ï¼Œä¸Žæ ‡è®ŽÍ¼æ¸…除攉™›†å™¨æœ‰ç›¸åŒçš„æ ‡è®°é˜¶ŒDüc€‚在½W¬äºŒé˜¶æ®µåQŒåˆ™æŠŠæ ‡è®°å¯¹è±¡å¤åˆ¶åˆ°å †æ ˆçš„æ–°åŸŸä¸­ä»¥ä¾¿åŽ‹ç¾ƒå †æ ˆã€‚è¿™¿Uæ”¶é›†å™¨ä¹Ÿåœæ­¢å…¶ä»–æ“作ã€?/span>

2.3.
å¤åˆ¶æ”‰™›†å™?/span>
  ˜q™ç§æ”‰™›†å™¨å°†å †æ ˆåˆ†äؓ两个域,常称为劽Iºé—´ã€‚毋ơ仅使用一åŠçš„½Iºé—´åQ?/span>jvm生æˆçš„æ–°å¯¹è±¡åˆ™æ”¾åœ¨å¦ä¸€åŠç©ºé—´ä¸­ã€?/span>gc˜q行æ—Óž¼Œå®ƒæŠŠå¯åˆ°è¾‘Ö¯¹è±¡å¤åˆ¶åˆ°å¦ä¸€åŠç©ºé—ß_¼Œä»Žè€ŒåŽ‹¾~©äº†å †æ ˆã€‚è¿™¿U方法适用于短生存期的对象åQŒæŒ¾l­å¤åˆ‰™•¿ç”Ÿå­˜æœŸçš„对象则导致效率é™ä½Žã€?/span>

2.4.
å¢žé‡æ”‰™›†å™?/strong>
ã€€ã€€å¢žé‡æ”‰™›†å™¨æŠŠå †æ ˆåˆ†äØ“å¤šä¸ªåŸŸï¼Œæ¯æ¬¡ä»…从一个域攉™›†åžƒåœ¾ã€‚这会造æˆè¾ƒå°çš„应用程åºä¸­æ–­ã€?/span>

2.5.
分代攉™›†å™?/strong>
  ˜q™ç§æ”‰™›†å™¨æŠŠå †æ ˆåˆ†äؓ两个或多个域åQŒç”¨ä»¥å­˜æ”¾ä¸åŒå¯¿å‘½çš„对象ã€?/span>jvm生æˆçš„æ–°å¯¹è±¡ä¸€èˆ¬æ”¾åœ¨å…¶ä¸­çš„æŸä¸ªåŸŸä¸­ã€‚è¿‡ä¸€ŒD‰|—¶é—ß_¼Œ¾l§ç®‹å­˜åœ¨çš„å¯¹è±¡å°†èŽ·å¾—ä½¿ç”¨æœŸåÆˆè½¬å…¥æ›´é•¿å¯¿å‘½çš„åŸŸä¸­ã€‚åˆ†ä»£æ”¶é›†å™¨å¯¹ä¸åŒçš„域ä‹É用ä¸åŒçš„½Ž—法以优化性能ã€?/span>

2.6.
òq¶å‘攉™›†å™?/strong>
  òq¶å‘攉™›†å™¨ä¸Žåº”用½E‹åºåŒæ—¶˜q行。这些收集器在æŸç‚¹ä¸ŠåQˆæ¯”如压¾~©æ—¶åQ‰ä¸€èˆ¬éƒ½ä¸å¾—ä¸åœæ­¢å…¶ä»–æ“作以完æˆç‰¹å®šçš„ä“QåŠ¡ï¼Œä½†æ˜¯å› äØ“å…¶ä»–åº”ç”¨½E‹åºå¯è¿›è¡Œå…¶ä»–çš„åŽå°æ“作åQŒæ‰€ä»¥ä¸­æ–­å…¶ä»–处ç†çš„实际旉™—´å¤§å¤§é™ä½Žã€?/span>

2.7.
òq¶è¡Œæ”‰™›†å™?/strong>
  òq¶è¡Œæ”‰™›†å™¨ä‹É用柿Uä¼ ¾lŸçš„½Ž—法òq¶ä‹É用多¾U¿ç¨‹òq¶è¡Œçš„æ‰§è¡Œå®ƒä»¬çš„工作。在å¤?/span>cpu机器上ä‹É用多¾U¿ç¨‹æŠ€æœ¯å¯ä»¥æ˜¾è‘—çš„æé«˜java应用½E‹åºçš„坿‰©å±•性ã€?/span>


3.Sun HotSpot 1.4.1 JVM
堆大ž®çš„调整

  Sun HotSpot 1.4.1使用分代攉™›†å™¨ï¼Œå®ƒæŠŠå †åˆ†ä¸ÞZ¸‰ä¸ªä¸»è¦çš„åŸŸï¼šæ–°åŸŸã€æ—§åŸŸä»¥åŠæ°¸ä¹…域ã€?/span>Jvm生æˆçš„æ‰€æœ‰æ–°å¯¹è±¡æ”‘Öœ¨æ–°åŸŸä¸­ã€‚一旦对象ç»åŽ†äº†ä¸€å®šæ•°é‡çš„垃圾攉™›†å¾ªçޝåŽï¼Œä¾¿èŽ·å¾—ä‹É用期òq¶è¿›å…¥æ—§åŸŸã€‚åœ¨æ°æ€¹…域中jvm则存å‚?/span>classå’?/span>method对象。就é…置而言åQŒæ°¸ä¹…域是一个独立域òq¶ä¸”ä¸è®¤ä¸ºæ˜¯å †çš„一部分ã€?/span>

  下é¢ä»‹ç»å¦‚何控制˜q™äº›åŸŸçš„大å°ã€‚å¯ä½¿ç”¨-Xmså’?/span>-Xmx æŽ§åˆ¶æ•´ä¸ªå †çš„åŽŸå§‹å¤§å°æˆ–最大倹{€?/span>

下é¢çš„命令是把åˆå§‹å¤§ž®è®¾¾|®äØ“128MåQ?/span>
  java –Xms128m
  –Xmx256m为控制新域的大å°åQŒå¯ä½¿ç”¨-XX:NewRatio讄¡½®æ–°åŸŸåœ¨å †ä¸­æ‰€å çš„æ¯”例ã€?/span>

  下é¢çš„命令把整个堆设¾|®æˆ128måQŒæ–°åŸŸæ¯”率设¾|®æˆ3åQŒå³æ–°åŸŸä¸Žæ—§åŸŸæ¯”例䨓1åQ?/span>3åQŒæ–°åŸŸäؓ堆的1/4æˆ?/span>32MåQ?/span>
  java –Xms128m –Xmx128m
  –XX:NewRatio =3å¯ä‹Éç”?/span>-XX:NewSizeå’?/span>-XX:MaxNewsize讄¡½®æ–°åŸŸçš„åˆå§‹å€¼å’Œæœ€å¤§å€¹{€?/span>

  下é¢çš„命令把新域的åˆå§‹å€¼å’Œæœ€å¤§å€ÆD®¾¾|®æˆ64m:
  java –Xms256m –Xmx256m –Xmn64m
ã€€ã€€æ°æ€¹…域默认大ž®äØ“4m。è¿è¡Œç¨‹åºæ—¶åQ?/span>jvm会调整永久域的大ž®ä»¥æ»¡èƒö需è¦ã€‚毋ơ调整时åQ?/span>jvm会对堆进行一‹Æ¡å®Œå…¨çš„垃圾攉™›†ã€?/span>

  使用-XX:MaxPerSize标志æ¥å¢žåŠ æ°¸ä¹…åŸŸæ­å¤§ž®ã€‚在WebLogic Server应用½E‹åºåŠ è²è¾ƒå¤š¾cÀL—¶åQŒç»å¸”Rœ€è¦å¢žåŠ æ°¸ä¹…åŸŸçš„æœ€å¤§å€¹{€‚当jvm加貾cÀL—¶åQŒæ°¸ä¹…域中的对象急剧增加åQŒä»Žè€Œä‹Éjvm䏿–­è°ƒæ•´æ°æ€¹…域大ž®ã€‚äØ“äº†é¿å…è°ƒæ•ß_¼Œå¯ä‹Éç”?/span>-XX:PerSize标志讄¡½®åˆå§‹å€¹{€?/span>

ä¸‹é¢æŠŠæ°¸ä¹…åŸŸåˆå§‹å€ÆD®¾¾|®æˆ32måQŒæœ€å¤§å€ÆD®¾¾|®æˆ64mã€?/span>
  java -Xms512m -Xmx512m -Xmn128m -XX:PermSize=32m -XX:MaxPermSize=64m

  默认状æ€ä¸‹åQ?/span>HotSpot在新域中使用å¤åˆ¶æ”‰™›†å™¨ã€‚该域一般分ä¸ÞZ¸‰ä¸ªéƒ¨åˆ†ã€‚第一部分ä¸?/span>EdenåQŒç”¨äºŽç”Ÿæˆæ–°çš„对象。å¦ä¸¤éƒ¨åˆ†ç§°ä¸ºæ•‘助空é—ß_¼Œå½?/span>Eden充满æ—Óž¼Œæ”‰™›†å™¨åœæ­¢åº”用程åºï¼ŒæŠŠæ‰€æœ‰å¯åˆ°è¾¾å¯¹è±¡å¤åˆ¶åˆ°å½“å‰çš„from救助½Iºé—´åQŒä¸€æ—¦å½“å‰çš„from救助½Iºé—´å……满åQŒæ”¶é›†å™¨åˆ™æŠŠå¯åˆ°è¾‘Ö¯¹è±¡å¤åˆ¶åˆ°å½“å‰çš?/span>to救助½Iºé—´ã€?/span>Fromå’?/span>to救助½Iºé—´äº’æ¢è§’è‰²ã€‚ç»´æŒæ´»åŠ¨çš„å¯¹è±¡ž®†åœ¨æ•‘助½Iºé—´ä¸æ–­å¤åˆ¶åQŒç›´åˆ°å®ƒä»¬èŽ·å¾—ä‹É用期òq¶è{入旧域。ä‹Éç”?/span>-XX:SurvivorRatioå¯æŽ§åˆ¶æ–°åŸŸå­½Iºé—´çš„大ž®ã€?/span>

  å?/span>NewRationä¸€æ øP¼ŒSurvivorRationè§„å®šæŸæ•‘助域ä¸?/span>Eden½Iºé—´çš„æ¯”倹{€‚比如,以下命ä×o把新域设¾|®æˆ64måQ?/span>Edenå?/span>32måQŒæ¯ä¸ªæ•‘助域å„å 16måQ?/span>
  
java -Xms256m -Xmx256m -Xmn64m -XX:SurvivorRation =2

 

如剿‰€˜qŽÍ¼Œé»˜è®¤çжæ€ä¸‹HotSpotå¯ÒŽ–°åŸŸä‹É用å¤åˆ¶æ”¶é›†å™¨åQŒå¯¹æ—§åŸŸä½¿ç”¨æ ‡è®°åQ清除ï¼åŽ‹ç¾ƒæ”‰™›†å™¨ã€‚在新域中ä‹É用å¤åˆ¶æ”¶é›†å™¨æœ‰å¾ˆå¤šæ„ä¹‰ï¼Œå› äØ“åº”ç”¨½E‹åºç”Ÿæˆçš„å¤§éƒ¨åˆ†å¯¹è±¡æ˜¯çŸ­å¯¿å‘½çš„ã€‚ç†æƒ³çжæ€ä¸‹åQŒæ‰€æœ‰è¿‡æ¸¡å¯¹è±¡åœ¨¿UÕd‡ºEden½Iºé—´æ—¶å°†è¢«æ”¶é›†ã€‚如果能够这æ ïLš„è¯ï¼Œòq¶ä¸”¿UÕd‡ºEden½Iºé—´çš„对象是长寿命的åQŒé‚£ä¹ˆç†è®ÞZ¸Šå¯ä»¥ç«‹å³æŠŠå®ƒä»¬ç§»˜q›æ—§åŸŸï¼Œé¿å…在救助空间åå¤å¤åˆ¶ã€‚但是,应用½E‹åºä¸èƒ½é€‚刘q™ç§ç†æƒ³çжæ€ï¼Œå› äؓ它们有一ž®éƒ¨åˆ†ä¸­é•¿å¯¿å‘½çš„å¯¹è±¡ã€‚æœ€å¥½æ˜¯ä¿æŒ˜q™äº›ä¸­é•¿å¯¿å‘½çš„å¯¹è±¡åÆˆæ”‘Öœ¨æ–°åŸŸä¸­ï¼Œå› äØ“å¤åˆ¶ž®éƒ¨åˆ†çš„对象æ€ÀL¯”压羃旧域廉ä­hã€‚äØ“æŽ§åˆ¶æ–°åŸŸä¸­å¯¹è±¡çš„å¤åˆ¶åQŒå¯ç”?/span>-XX:TargetSurvivorRatio控制救助½Iºé—´çš„æ¯”例(该值是讄¡½®æ•‘助½Iºé—´çš„ä‹É用比例。如救助½Iºé—´ä½?/span>1MåQŒè¯¥å€?/span>50表示å¯ç”¨500KåQ‰ã€‚该值是一个百分比åQŒé»˜è®¤å€¼æ˜¯50。当较大的堆栈ä‹É用较低的sruvivorratioæ—Óž¼Œåº”增加该值到80è‡?/span>90åQŒä»¥æ›´å¥½åˆ©ç”¨æ•‘助½Iºé—´ã€‚用-XX:maxtenuring thresholdå¯æŽ§åˆ¶ä¸Šé™ã€?/span>

  为放¾|®æ‰€æœ‰çš„å¤åˆ¶å…¨éƒ¨å‘生以åŠå¸Œæœ›å¯¹è±¡ä»?/span>eden扩展到旧域,å¯ä»¥æŠ?/span>MaxTenuring Threshold讄¡½®æˆ?/span>0。设¾|®å®ŒæˆåŽåQŒå®žé™…上ž®×ƒ¸å†ä‹É用救助空间了åQŒå› æ­¤åº”æŠ?/span>SurvivorRatioè®¾æˆæœ€å¤§å€ég»¥æœ€å¤§åŒ–Eden½Iºé—´åQŒè®¾¾|®å¦‚下:
  java … -XX:MaxTenuringThreshold=0 –XX:SurvivorRatioåQ?/span>50000 …


4.BEA JRockit JVM
çš„ä‹Éç”?/strong>
  Bea WebLogic 8.1使用的新çš?/span>JVM用于Intelòq›_°ã€‚在Bea安装完毕的目录下å¯ä»¥çœ‹åˆ°æœ‰ä¸€ä¸ªç±»ä¼égºŽjrockit81sp1_141_03的文件夹。这ž®±æ˜¯Beaæ–?/span>JVM所在目录。ä¸åŒäºŽHotSpotæŠ?/span>Java字节ç ç¼–è¯‘æˆæœ¬åœ°ç ï¼Œå®ƒé¢„先编译戾c…R€?/span>JRockit˜q˜æä¾›äº†æ›´ç»†è‡´çš„功能用以观察JVMçš„è¿è¡Œçжæ€ï¼Œä¸»è¦æ˜¯ç‹¬ç«‹çš„GUI控制åŽÍ¼ˆåªèƒ½é€‚用于ä‹Éç”?/span>Jrockitæ‰èƒ½ä½¿ç”¨jrockit81sp1_141_03自带çš?/span>console监控一äº?/span>cpuå?/span>memory傿•°åQ‰æˆ–è€?/span>WebLogic Server控制å°ã€?/span>

  Bea JRockit JVM支æŒ4¿U垃圾收集器åQ?/span>
  4.1.1.分代å¤åˆ¶æ”‰™›†å™?/span>
  它与默认的分代收集器工作½{–ç•¥¾cÖM¼¼ã€‚对象在新域中分é…,å?/span>JRockit文档中的nursery。这¿U收集器最适åˆå?/span>cpuæœÞZ¸Šž®åž‹å †æ“作ã€?/span>

  4.1.2.å•ç©ºé—´åÆˆå‘æ”¶é›†å™¨
  该收集器使用完整堆,òq¶ä¸ŽèƒŒæ™¯¾U¿ç¨‹å…±åŒå·¥ä½œã€‚å°½½Ž¡è¿™¿U收集器å¯ä»¥æ¶ˆé™¤ä¸­æ–­åQŒä½†æ˜¯æ”¶é›†å™¨éœ€èŠÞp´¹è¾ƒé•¿çš„æ—¶é—´å¯»æ‰¾æ­»å¯¹è±¡åQŒè€Œä¸”处ç†åº”用½E‹åºæ—¶æ”¶é›†å™¨¾l常˜q行。如果处ç†å™¨ä¸èƒ½åº”付应用½E‹åºäº§ç”Ÿçš„垃圾,它会中断应用½E‹åºòq¶å…³é—­æ”¶é›†ã€?/span>

  分代òq¶å‘攉™›†å™?/span> ˜q™ç§æ”‰™›†å™¨åœ¨æŠ¤ç†åŸŸä‹É用排它å¤åˆ¶æ”¶é›†å™¨åQŒåœ¨æ—§åŸŸä¸­åˆ™ä½¿ç”¨òq¶å‘攉™›†å™¨ã€‚由于它比啽Iºé—´å…±åŒå‘生攉™›†å™¨ä¸­æ–­é¢‘¾J,因此它需è¦è¾ƒž®‘的内存åQŒåº”用程åºçš„˜q行效率也较高,注æ„åQŒè¿‡ž®çš„æŠ¤ç†åŸŸå¯ä»¥å¯¼è‡´å¤§é‡çš„ä¸´æ—¶å¯¹è±¡è¢«æ‰©å±•åˆ°æ—§åŸŸä¸­ã€‚è¿™ä¼šé€ æˆæ”‰™›†å™¨è¶…è´Ÿè·˜q作åQŒç”šè‡³é‡‡ç”¨æŽ’它性工作方å¼å®Œæˆæ”¶é›†ã€?/span>

  4.1.3.òq¶è¡Œæ”‰™›†å™?/span>
ã€€ã€€è¯¥æ”¶é›†å™¨ä¹Ÿåœæ­¢å…¶ä»–è¿›½E‹çš„工作åQŒä½†ä½¿ç”¨å¤šçº¿½E‹ä»¥åŠ é€Ÿæ”¶é›†è¿›½E‹ã€‚å°½½Ž¡å®ƒæ¯”其他的攉™›†å™¨æ˜“于引起长旉™—´çš„中断,但一般能更好的利用内存,½E‹åºæ•ˆçŽ‡ä¹Ÿè¾ƒé«˜ã€?/span>

  默认状æ€ä¸‹åQ?/span>JRockit使用分代òq¶å‘攉™›†å™¨ã€‚è¦æ”¹å˜æ”‰™›†å™¨ï¼Œå¯ä‹Éç”?/span>-Xgc:åQŒå¯¹åº”四个收集器分别ä¸?/span>gencopyåQ?/span>singleconåQ?/span>gencon以åŠparallel。å¯ä½¿ç”¨-Xmså’?/span>-Xmx讄¡½®å †çš„åˆå§‹å¤§å°å’Œæœ€å¤§å€¹{€‚è¦è®„¡½®æŠ¤ç†åŸŸï¼Œåˆ™ä‹Éç”?/span>-Xns:java –jrockit –Xms512m –Xmx512m –Xgc:gencon –Xns128m…ž®½ç®¡JRockit支æŒ-verbose:gc开养I¼Œä½†å®ƒè¾“出的信æ¯ä¼šå› æ”¶é›†å™¨çš„ä¸åŒè€Œå¼‚ã€?/span>JRockit˜q˜æ”¯æŒ?/span>memoryã€?/span>loadå’?/span>codegen的输出ã€?/span>

ã€€ã€€æ³¨æ„ åQšå¦‚æž?/span> 使用JRockit JVM的诘q˜å¯ä»¥ä‹Éç”?/span>WLS自带çš?/span>consoleåQ?/span>C:\bea\jrockit81sp1_141_03\bin下)æ¥ç›‘控一些数æ®ï¼Œå¦?/span>cpuåQ?/span>memery½{‰ã€‚è¦æƒŒ™ƒ½æž„监控必™åÕdœ¨å¯åЍæœåŠ¡æ—?/span>startWeblogic.cmd中加入ï¼Xmanagement傿•°ã€?/span>


5.
如何ä»?/span>JVM中获å–ä¿¡æ¯æ¥˜q›è¡Œè°ƒæ•´

  -verbose.gc开兛_¯æ˜„¡¤ºgcçš„æ“作内å®V€‚打开它,å¯ä»¥æ˜„¡¤ºæœ€å¿™å’Œæœ€½Iºé—²æ”‰™›†è¡ŒäØ“å‘ç”Ÿçš„æ—¶é—´ã€æ”¶é›†å‰åŽçš„内存大å°ã€æ”¶é›†éœ€è¦çš„æ—‰™—´½{‰ã€‚打开-xx:+ printgcdetails开养I¼Œå¯ä»¥è¯¦ç»†äº†è§£gc中的å˜åŒ–。打开-XX: + PrintGCTimeStamps开养I¼Œå¯ä»¥äº†è§£˜q™äº›åžƒåœ¾æ”‰™›†å‘生的时é—ß_¼Œè‡?/span>jvmå¯åЍ以åŽä»¥ç§’计é‡ã€‚最åŽï¼Œé€šè¿‡-xx: + PrintHeapAtGC开关了解堆的更详细的信æ¯ã€‚äØ“äº†äº†è§£æ–°åŸŸçš„æƒ…å†µåQŒå¯ä»¥é€šè¿‡-XX:=PrintTenuringDistribution开关了解获得ä‹É用期的对象æƒã€?/span>


6.Pdm
¾pÈ»ŸJVM调整

  6.1.æœåŠ¡å™¨ï¼šå‰æå†…å­˜1G å?/span>CPU

  å¯é€šè¿‡å¦‚䏋傿•°˜q›è¡Œè°ƒæ•´åQšï¼server å¯ç”¨æœåŠ¡å™¨æ¨¡å¼ï¼ˆå¦‚æžœCPU多,æœåŠ¡å™¨æœºå»ø™®®ä½¿ç”¨æ­¤é¡¹åQ?/span>

  åQ?/span>Xms,åQ?/span>Xmxä¸€èˆ¬è®¾ä¸ºåŒæ ·å¤§ž®ã€?/span> 800m
  åQ?/span>Xmn 是将NewSizeä¸?/span>MaxNewSizeè®¾äØ“ä¸€è‡´ã€?/span>320m
  åQ?/span>XX:PerSize 64m
  åQ?/span>XX:NewSize 320m æ­¤å€ÆD®¾å¤§å¯è°ƒå¤§æ–°å¯¹è±¡åŒºåQŒå‡ž®?/span>Full GC‹Æ¡æ•°
  åQ?/span>XX:MaxNewSize 320m
  åQ?/span>XX:NewRato NewSize设了å¯ä¸è®¾ã€?/span>4
  åQ?/span>XX: SurvivorRatio 4
  åQ?/span>XX:userParNewGC å¯ç”¨æ¥è®¾¾|®åƈ行收é›?/span>
  åQ?/span>XX:ParallelGCThreads å¯ç”¨æ¥å¢žåŠ åÆˆè¡Œåº¦ 4
  åQ?/span>XXUseParallelGC 讄¡½®åŽå¯ä»¥ä‹Éç”¨åÆˆè¡Œæ¸…é™¤æ”¶é›†å™¨
  åQ?/span>XXåQ?/span>UseAdaptiveSizePolicy 与上é¢ä¸€ä¸ªè”åˆä‹É用效果更好,利用它å¯ä»¥è‡ªåŠ¨ä¼˜åŒ–æ–°åŸŸå¤§ž®ä»¥åŠæ•‘助空间比å€?/span>

  6.2.客户机:通过åœ?/span>JNLPæ–‡äšg中设¾|®å‚æ•°æ¥è°ƒæ•´å®¢æˆ·ç«?/span>JVM

  JNLP䏭傿•ŽÍ¼šinitial-heap-sizeå’?/span>max-heap-size

  ˜q™å¯ä»¥åœ¨frameworkçš?/span>RequestManager中生æˆ?/span>JNLPæ–‡äšg时加入上˜q°å‚敎ͼŒä½†æ˜¯˜q™äº›å€¼æ˜¯è¦æ±‚æ ÒŽ®å®¢æˆ·æœºçš„¼‹¬äšg状æ€å˜åŒ–çš„åQˆå¦‚客户机的内存大尽{‰ï¼‰ã€‚å¾è®®è¿™ä¸¤ä¸ªå‚æ•°å€ÆD®¾ä¸ºå®¢æˆähœºå¯ç”¨å†…å­˜çš?/span>60åQ…(有待‹¹‹è¯•åQ‰ã€‚äØ“äº†åœ¨åŠ¨æ€ç”Ÿæˆ?/span>JNLPæ—¶ä»¥ä¸Šä¸¤ä¸ªå‚æ•°å€ÆDƒ½å¤Ÿéšå®¢æˆ·æœÞZ¸åŒè€Œä¸åŒï¼Œå¯é è™‘获得客æˆähœº¾pÈ»Ÿä¿¡æ¯òq¶å°†˜q™äº›åµŒåˆ°é¦–页index.jspä¸­ä½œä¸ø™¿žæŽ¥è¯·æ±‚çš„å‚æ•°ã€?/span>

  在设¾|®äº†ä¸Šè¿°å‚æ•°åŽå¯ä»¥é€šè¿‡Visualgc æ¥è§‚察垃圑֛žæ”¶çš„ä¸€äº›å‚æ•°çжæ€ï¼Œå†åšç›¸åº”çš„è°ƒæ•´æ¥æ”¹å–„性能。一般的标准是凞®?/span>fullgc的次敎ͼŒæœ€å¥½ç¡¬ä»¶æ”¯æŒä‹Éç”¨åÆˆè¡Œåžƒåœ‘Ö›žæ”Óž¼ˆè¦æ±‚å¤?/span>CPUåQ‰ã€?/span>



]]>
About serialVersionUIDhttp://www.aygfsteel.com/MrZhujia/archive/2009/10/07/297348.html¼œå˜‰¼œå˜‰Wed, 07 Oct 2009 02:13:00 GMThttp://www.aygfsteel.com/MrZhujia/archive/2009/10/07/297348.htmlhttp://www.aygfsteel.com/MrZhujia/comments/297348.htmlhttp://www.aygfsteel.com/MrZhujia/archive/2009/10/07/297348.html#Feedback0http://www.aygfsteel.com/MrZhujia/comments/commentRss/297348.htmlhttp://www.aygfsteel.com/MrZhujia/services/trackbacks/297348.htmlThe serialization runtime associates with each serializable class a version number, called a serialVersionUID, which is used during deserialization to verify that the sender and receiver of a serialized object have loaded classes for that object that are compatible with respect to serialization. If the receiver has loaded a class for the object that has a different serialVersionUID than that of the corresponding sender's class, then deserialization will result in an InvalidClassException. A serializable class can declare its own serialVersionUID explicitly by declaring a field named "serialVersionUID" that must be static, final, and of type long:

 ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L;

If a serializable class does not explicitly declare a serialVersionUID, then the serialization runtime will calculate a default serialVersionUID value for that class based on various aspects of the class, as described in the Java(TM) Object Serialization Specification. However, it is strongly recommended that all serializable classes explicitly declare serialVersionUID values, since the default serialVersionUID computation is highly sensitive to class details that may vary depending on compiler implementations, and can thus result in unexpected InvalidClassExceptions during deserialization. Therefore, to guarantee a consistent serialVersionUID value across different java compiler implementations, a serializable class must declare an explicit serialVersionUID value. It is also strongly advised that explicit serialVersionUID declarations use the private modifier where possible, since such declarations apply only to the immediately declaring class--serialVersionUID fields are not useful as inherited members.




 

åºåˆ—化è¿è¡Œæ—¶ä½¿ç”¨ä¸€ä¸ªç§°ä¸?serialVersionUID 的版本å·ä¸Žæ¯ä¸ªå¯åºåˆ—化类相关è”,该åºåˆ—å·åœ¨ååºåˆ—化过½E‹ä¸­ç”¨äºŽéªŒè¯åºåˆ—化对象的å‘é€è€…和接收者是å¦äؓ该对象加载了与åºåˆ—化兼容的类。如果接收者加载的该对象的¾cÈš„ serialVersionUID 与对应的å‘é€è€…çš„¾cÈš„版本å·ä¸åŒï¼Œåˆ™ååºåˆ—化将会导è‡?InvalidClassException。å¯åºåˆ—化类å¯ä»¥é€šè¿‡å£°æ˜Žå䨓 "serialVersionUID" 的字ŒDµï¼ˆè¯¥å­—ŒDµå¿…™åÀL˜¯é™æ€?(static)ã€æœ€¾l?(final) çš?long 型字ŒDµï¼‰æ˜‘ּ声明其自å·Þqš„ serialVersionUIDåQ?

 ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L;

如果å¯åºåˆ—化¾cÀLœªæ˜‘ּ声明 serialVersionUIDåQŒåˆ™åºåˆ—化è¿è¡Œæ—¶ž®†åŸºäºŽè¯¥¾cÈš„å„个斚w¢è®¡ç®—该类的默è®?serialVersionUID å€û|¼Œå¦?#8220;Java(TM) 对象åºåˆ—化规èŒ?#8221;中所˜q°ã€‚丘q‡ï¼Œå¼ºçƒˆå»ø™®® 所有å¯åºåˆ—化类都显å¼å£°æ˜?serialVersionUID å€û|¼ŒåŽŸå› æ˜¯è®¡½Ž—默认的 serialVersionUID 对类的详¾l†ä¿¡æ¯å…·æœ‰è¾ƒé«˜çš„æ•æ„Ÿæ€§ï¼Œæ ÒŽ®¾~–译器实现的ä¸åŒå¯èƒ½åƒå·®ä¸‡åˆ«åQŒè¿™æ ·åœ¨ååºåˆ—化˜q‡ç¨‹ä¸­å¯èƒ½ä¼šå¯ÆD‡´æ„外çš?InvalidClassException。因此,ä¸ÞZ¿è¯?serialVersionUID 倯D·¨ä¸åŒ java ¾~–译器实现的一致性,åºåˆ—化类必须声明一个明¼‹®çš„ serialVersionUID 倹{€‚è¿˜å¼ºçƒˆå»ø™®®ä½¿ç”¨ private 修饰½W¦æ˜¾½Cºå£°æ˜?serialVersionUIDåQˆå¦‚æžœå¯èƒ½ï¼‰åQŒåŽŸå› æ˜¯˜q™ç§å£°æ˜Žä»…应用于直接声明¾c?-- serialVersionUID å­—æ®µä½œäØ“¾l§æ‰¿æˆå‘˜æ²¡æœ‰ç”¨å¤„。数¾l„ç±»ä¸èƒ½å£°æ˜Žä¸€ä¸ªæ˜Ž¼‹®çš„ serialVersionUIDåQŒå› æ­¤å®ƒä»¬æ€ÀL˜¯å…ähœ‰é»˜è®¤çš„计½Ž—å€û|¼Œä½†æ˜¯æ•°ç»„¾cÀL²¡æœ‰åŒ¹é…?serialVersionUID å€¼çš„è¦æ±‚ã€?



]]>
XML的四¿Uè§£æžå™¨(dom,sax,jdom,dom4j)原ç†åŠæ€§èƒ½æ¯”较http://www.aygfsteel.com/MrZhujia/archive/2009/10/06/297289.html¼œå˜‰¼œå˜‰Tue, 06 Oct 2009 01:31:00 GMThttp://www.aygfsteel.com/MrZhujia/archive/2009/10/06/297289.htmlhttp://www.aygfsteel.com/MrZhujia/comments/297289.htmlhttp://www.aygfsteel.com/MrZhujia/archive/2009/10/06/297289.html#Feedback0http://www.aygfsteel.com/MrZhujia/comments/commentRss/297289.htmlhttp://www.aygfsteel.com/MrZhujia/services/trackbacks/297289.html阅读全文

]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ÄÏÍ¶ÏØ| áªÉ½ÏØ| ´óÆÒÇø| ÍÍÁôÏØ| Ρɽ| ºªµ¦ÏØ| »ô³ÇÏØ| ¿µ¶¨ÏØ| Á°Ë®ÏØ| Ãñ·áÏØ| Öî³ÇÊÐ| ÎäÚìÏØ| ´ïÈÕÏØ| ÐÇ×ÓÏØ| ²èÁêÏØ| ²áºàÏØ| ÁéÇðÏØ| Ëì²ýÏØ| »³¼¯ÏØ| ÓàÇìÏØ| Ïã¸ñÀïÀ­ÏØ| µÂÇÕÏØ| º«³ÇÊÐ| ¿â³µÏØ| µ¤ÀâÏØ| ƽÄÏÏØ| л¯ÏØ| ½ðÏªÏØ| ÄϺÍÏØ| ãë´¨ÏØ| ³¤ÐËÏØ| Ö¾µ¤ÏØ| ¸ßÌÆÏØ| ÎÚÀ­ÌغóÆì| ¾Ą̊ÊÐ| ÈýÑÇÊÐ| Îä¹¦ÏØ| °¢ÈÙÆì| Ú¯°²ÏØ| ÓÜÖÐÏØ| ÇßÔ´ÏØ|