๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅDEV/Java || Spring

์ƒ์ˆ˜ํ’€๊ณผ String

by bdd 2022. 2. 20.

์ƒ์ˆ˜ํ’€์€ ํž™ ์˜์—ญ ๋‚ด๋ถ€์— ๋ฌธ์ž์—ด ๊ฐ์ฒด๋ฅผ ์œ„ํ•ด ๋ณ„๋„๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ƒ์ˆ˜ํ’€์— ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง„ String ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•˜๋ฉด ๊ทธ ๊ฐ์ฒด์˜ ์ฃผ์†Ÿ๊ฐ’์„ ์ฐธ์กฐํ•˜๋ฉฐ, ๊ฐ’์„ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด ์ƒ์ˆ˜ํ’€์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๊ฐ€์ง„ ๋ฌธ์ž์—ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ์ฃผ์†Ÿ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌํ„ฐ๋Ÿด๋กœ ์„ ์–ธํ•œ ๊ฒฝ์šฐ ๋‚ด๋ถ€์ ์œผ๋กœ String์˜ intern( ) ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. 

 

๋ฆฌํ„ฐ๋Ÿด("")๋กœ String ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด JVM์€ ๋จผ์ € ์ƒ์ˆ˜ํ’€์„ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง„ String ๊ฐ์ฒด๋ฅผ ์ฐพ์œผ๋ฉด ๊ทธ ๊ฐ์ฒด์˜ ์ฃผ์†Œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์„œ ์ฐธ์กฐํ•˜๋ฉฐ, ์ด๋ฅผ ์ฐพ์ง€ ๋ชปํ•  ๊ฒฝ์šฐ ์ƒ์ˆ˜ํ’€์— ํ•ด๋‹น ๊ฐ’์„ ๊ฐ€์ง„ String ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ์ฃผ์†Œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

 

์ด๋Š” intern( ) ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋“ฑ๋ก๋˜๋Š”๋ฐ์š”, String.equals( ) ๋ฐ˜ํ™˜๊ฐ’์ด true์ธ String ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ํ’€์— ์ถ”๊ฐ€ํ•œ ํ›„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

 

jdk9/jdk9/hotspot: 910e24afc502 src/share/vm/classfile/stringTable.cpp

view src/share/vm/classfile/stringTable.cpp @ 12755:910e24afc502 Added tag jdk-9+169 for changeset 16d692be099c author lana date Thu, 11 May 2017 16:26:48 +0000 parents a5fdf2f30c6e children d6d7e5caf497 line source /* * Copyright (c) 1997, 2017, Oracle an

hg.openjdk.java.net

 

 

 

 

 

 

 

Java 7 ์ด์ „ ๋ฒ„์ „์—์„œ๋Š” ์ƒ์ˆ˜ํ’€์ด Perm ์˜์—ญ์— ์กด์žฌํ–ˆ์ง€๋งŒ ์ดํ›„ ๋ถ€ํ„ฐ๋Š” Heap ์˜์—ญ์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ์˜์—ญ์— ์กด์žฌํ•˜๋Š” String ๊ฐ์ฒด๋“ค์€ GC์˜ ๋Œ€์ƒ์ด ๋ฉ๋‹ˆ๋‹ค.

 

 

Guide to Java String Pool | Baeldung

Learn how the JVM optimizes the amount of memory allocated to String storage in the Java String Pool.

www.baeldung.com

 

 

๋Œ“๊ธ€