±¾ÎÄתÔØ×Ô΢ÐŹ«Öںš¸³ÌÐòÐÂÊӽ硹£¬×÷Õ߶þʦÐÖ¡£×ªÔر¾ÎÄÇëÁªÏµ³ÌÐòÐÂÊӽ繫Öںš£
StringÀà¿ÉÒÔ˵ÊÇJava±à³ÌÖÐʹÓÃ×î¶àµÄÀàÁË£¬Èç¹ûÄܶÔString×Ö·û´®µÄÐÔÄܽøÐÐÓÅ»¯£¬ÄÇô³ÌÐòµÄÐÔÄܱØÈ»ÄÜ´ó·ùÌáÉý¡£
Õâ²»JDK9¾Í¶ÔString×Ö·û´®½øÐÐÁ˸ĽøÉý¼¶£¬ÔÚijЩ³¡¾°Ï¿ÉÒÔÈÃString×Ö·û´®ÄÚ´æ¼õÉÙÒ»°ë£¬½ø¶ø¼õÉÙJVMµÄGC´ÎÊý¡£
StringµÄµ×²ã´æ´¢
ÔÚÃæÊÔµÄʱºòÎÒÃÇͨ³£»á˵String×Ö·û´®Óв»¿É±äµÄÌØÐÔ£¬Ã¿´Î¶¼Òª´´½¨ÐµÄ×Ö·û´®¡£ÄÇô£¬ÎªÊ²Ã´String×Ö·û´®ÊDz»¿É±äµÄÄØ?
ÏÈÀ´¿´Ò»ÏÂString×Ö·û´®µÄµ×²ã´æ´¢½á¹¹£º
- public final class String
- implements java.io.Serializable, Comparable<String>, CharSequence {
- private final char value[];
- public String() {
- this.value = "".value;
- }
- public String(String original) {
- this.value = original.value;
- this.hash = original.hash;
- }
- // ...
- }
¿´µ½Ê²Ã´ÁË?µ±ÎÒÃÇnewÒ»¸öString¶ÔÏóʱ£¬¶ÔÓ¦µÄ×Ö·û´®ÆäʵÊÇÒÔcharÊý×éµÄÐÎʽ´æ´¢ÔÚString¶ÔÏóÄÚ²¿¡£¶øÕâ¸öcharÊý×éÊÇfinalµÄ£¬Ò²¾ÍÊÇ˵²»¿É±äµÄ¡£
ÕâÒ²¾ÍÊÇΪʲôÎÒÃÇ˵String×Ö·û´®ÓµÓв»¿É±äµÄÌØÐÔ£¬µ±×Ö·û´®¸Ä±äÁË£¬charÊý×é²»¿É±ä£¬¾ÍÖ»ÄÜ´´½¨Ò»¸öеĶÔÏó£¬ÐµÄcharÊý×éÁË¡£
µ×²ã´æ´¢µÄÓÅ»¯
ÉÏÃæ˵µÄÇé¿öÊÇJDK8¼°ÒÔÇ°°æ±¾£¬µ½ÁËJDK9£¬StringÖÐ×Ö·û´®µÄ´æ´¢²»ÔÙÓÃcharÊý×éÁË£¬¸ÄÓÃbyteÊý×é¡£
- public final class String
- implements java.io.Serializable, Comparable<String>, CharSequence {
- @Stable
- private final byte[] value;
- private final byte coder;
- @Native static final byte LATIN1 = 0;
- @Native static final byte UTF16 = 1;
- static final boolean COMPACT_STRINGS;
- public String() {
- this.value = "".value;
- this.coder = "".coder;
- }
- @HotSpotIntrinsicCandidate
- public String(String original) {
- this.value = original.value;
- this.coder = original.coder;
- this.hash = original.hash;
- }
- // ...
- }
²»½ö½«charÊý×é¸ÄΪbyteÊý×飬¶øÇÒÐÂÔöÁËÒ»¸öcoderµÄ³ÉÔ±±äÁ¿¡£
ÔÚ³ÌÐòÖУ¬¾ø´ó¶àÊý×Ö·û´®Ö»°üº¬Ó¢ÎÄ×ÖĸÊý×ÖµÈ×Ö·û£¬Ê¹ÓÃLatin-1±àÂ룬һ¸ö×Ö·ûÕ¼ÓÃÒ»¸öbyte¡£Èç¹ûʹÓÃchar£¬Ò»¸öcharÒªÕ¼ÓÃÁ½¸öbyte£¬»áÕ¼ÓÃË«±¶µÄÄÚ´æ¿Õ¼ä¡£
µ«ÊÇ£¬Èç¹û×Ö·û´®ÖÐʹÓÃÁËÖÐÎĵȳ¬³öLatin-1±íʾ·¶Î§µÄ×Ö·û£¬Ê¹ÓÃLatin-1¾Íû°ì·¨±íʾÁË¡£ÕâʱJDK»áʹÓÃUTF-16±àÂ룬ÄÇôռÓõĿռäºÍ¾É°æ(ʹÓÃchar[])ÊÇÒ»ÑùµÄ¡£
coder±äÁ¿´ú±í±àÂëµÄ¸ñʽ£¬Ä¿Ç°StringÖ§³ÖÁ½ÖÖ±àÂë¸ñʽLatin-1ºÍUTF-16¡£Latin-1ÐèÒªÓÃÒ»¸ö×Ö½ÚÀ´´æ´¢£¬¶øUTF-16ÐèҪʹÓÃ2¸ö×Ö½Ú»òÕß4¸ö×Ö½ÚÀ´´æ´¢¡£
¾Ý˵ÕâÒ»¸Ä½ø·½°¸ÊÇJDKµÄ¿ª·¢ÈËÔ±ÓôóÊý¾ÝºÍÈ˹¤ÄÜÖÇÄÜ£¬µ÷ÑÐÁ˳ÉǧÉÏÍòµÄÓ¦ÓóÌÐòµÄheapdumpÐÅÏ¢ºó£¬µÃ³ö£º´ó²¿·ÖµÄString¶¼ÊÇÒÔLatin-1×Ö·û±àÂëÀ´±íʾµÄ£¬Ö»ÐèÒªÒ»¸ö×Ö½Ú´æ´¢¾Í¹»ÁË£¬Á½¸ö×Ö½ÚÍêÈ«ÊÇÀË·Ñ¡£
COMPACT_STRINGSÊôÐÔÔòÊÇÓÃÀ´¿ØÖÆÊÇ·ñ¿ªÆôStringµÄcompact¹¦ÄÜ¡£Ä¬ÈÏÇé¿öÏÂÊÇ¿ªÆôµÄ¡£¿ÉÒÔʹÓÃ-XX:-CompactStrings²ÎÊýÀ´¶Ô´Ë¹¦ÄܽøÐйرա£
¸Ä½øµÄºÃ´¦
¸Ä½øµÄºÃ´¦ÊǷdz£Ã÷ÏԵģ¬Ê×ÏÈÈç¹ûÏîÄ¿ÖÐʹÓÃLatin-1×Ö·û¼¯¾Ó¶à£¬ÄÚ´æµÄÕ¼Óôó·ù¶È¼õÉÙ£¬Í¬ÑùµÄÓ²¼þÅäÖÿÉÒÔÖ§³Å¸ü¶àµÄÒµÎñ¡£
µ±ÄÚ´æ¼õÉÙÖ®ºó£¬½øÒ»²½µ¼Ö¼õÉÙGC´ÎÊý£¬½ø¶ø¼õÉÙStop-The-WorldµÄƵ´Î£¬Í¬Ñù»áÌáÉýϵͳµÄÐÔÄÜ¡£
С½á
Ëæ×ÅJDKµÄµü´úString×Ö·û´®µÄÄÚ´æ½á¹¹¼°·½·¨µÈÒ²ÔÚ²»¶ÏµØ½øÐÐÑݱ䡣ÕâÊÇÒòΪString×Ö·û´®ÍùÍùÊÇJVMÖÐÕ¼ÓÃÄÚ´æ×î¶àµÄÀ࣬ͨ¹ý¶ÔËüµÄ¸ÄÔìÉý¼¶£¬¶ÔÐÔÄܵÄÌáÉý»á¸ü¼ÓÃ÷ÏÔ¡£
TOPÔÆ £¨west.cn£©8ÔÂ14ÈÕÏûÏ¢£¬±¾ÆÚµÄsedo ÓòÃû½»Ò× °ñ¹²ÓÐ63¸ö ÓòÃû ³¬2000ÃÀ...
²½Èë2Ô£¬ÃÀ¹ÉÐÂÒ»ÂֲƱ¨¼¾½¥Èë¸ß³±¡£ ±¾Öܶþ£¬°üÀ¨°¢Àï°Í°Í¡¢ÑÇÂíÑ·¡¢¹È¸èÔÚÄÚ...
²Ù×÷³¡¾° ±¾½Ú²Ù×÷½éÉÜÔÚWindowsºÍLinux»·¾³ÖÐʹÓÃSSHÃÜÔ¿¶Ô·½Ê½Ô¶³ÌµÇ¼LinuxÔÆ...
1. ½Ó¿ÚÃèÊö ½Ó¿ÚÇëÇóÓòÃû£º cvm.tencentcloudapi.com ¡£ ±¾½Ó¿Ú (ResetInstance...
±¾ÎÄתÔØ×Ô¹«ÖںŶÁоÊõ(ID£ºAI_Discovery) ÏÂÃæÕâ¸öÄ£ÐÍÔÚÒ»ÏîͼÏñʶ±ð¾ºÈüÖо...
ÿÄê618ÊÇÄêÖйºÎï½Ú£¬Ã¿µ½ÕâÒ»Ì죬´ó¼Ò¶¼»á½øÈëÍø¹ºÄ£Ê½£¬·è¿ñµÄÂòÂòÂò¡£618¹º...
ÔƼÆËã·þÎñÕýÔÚÒÔÇ°ËùδÓеÄËÙ¶ÈÔÚ¸÷Ðи÷Òµ¿ìËÙÆÕ¼°£¬³ÉΪITÓ¦ÓõÄ×îÖ÷Á÷ʵÏÖÐÎ...
¡¾±àÕߵĻ°¡¿±¾ÎÄ×÷ÕßÀûÓÃ×Ô¼ºÔÆÔÉú¹¤³ÌʦµÄÓÅÊÆ£¬·ÖÏíÁËËû¶Ô2021Äê¼°Ö®ºóµÄÔÆ...
Cloud-initÊÇ¿ªÔ´µÄÔƳõʼ»¯³ÌÐò£¬Äܹ»¶Ôд´½¨µ¯ÐÔÔÆ·þÎñÆ÷ÖÐÖ¸¶¨µÄ×Ô¶¨ÒåÐÅÏ¢...
¾ÝIDCÆÀÊöÍø£¨idcps.com£©±¨µÀ£¬ntldstats.com×îÐÂÊý¾ÝÏÔʾ£¬½ØÖ¹ÖÁ2016Äê3ÔÂ31...