JDK์ ์ต์ ๊ฐ๋น์ง ์์ง๊ธฐ์ธ ZGC ์๊ฐ
์ถ์ฒ: Java ๋ด๋ถ ZGC ๋๋ Z Garbage Collector๋ JDK์์ ๊ฐ์ฅ ํ๋์ ์ธ ๊ฐ๋น์ง ์์ง๊ธฐ์ ๋๋ค. ์๋๋ JDK 11์์ ์คํ์ ์ธ ๊ธฐ๋ฅ์ผ๋ก ๋ฑ์ฅํ์ต๋๋ค. ZGC๋ JEP 377 ํฅ์์ด ์น์ธ๋ ํ JDK 15์ ํ๋ก๋์ ๊ธฐ๋ฅ์ด ๋์์ต๋๋ค. ์ด ๊ธฐ์ฌ์์๋ ZGC์ ๋ชฉํ์ ๋ฏธ๋๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.ZGC ๊ฒํ
ZGC๋ ํ์ฅ ๊ฐ๋ฅํ๊ณ ๋๊ธฐ ์๊ฐ์ด ์งง์ ๊ฐ๋น์ง ์์ง๊ธฐ๋ก ์ค๊ณ๋์์ต๋๋ค. ZGC ์์ ์ค ์ต๋ ์ผ์ ์ค์ง ์๊ฐ์ ๊ฑฐ์ 250๋ง์ดํฌ๋ก์ด๋ฅผ ์ด๊ณผํ์ง ์์ต๋๋ค. ์, ์ ํํ ๋ง์ดํฌ๋ก์ด์ด๋ฉฐ ํ๊ท ์ผ์ ์ค์ง ์๊ฐ์ ์์ญ ๋ง์ดํฌ๋ก์ด์ ๋๋ค. ZGC๋ ํ์ฅ์ฑ์ด ๋ฐ์ด๋๋ฉฐ ์ต์ ํ ํฌ๊ธฐ๋ 8MB์์ 16TB๊น์ง์ ๋๋ค. ์ผ์์ ์ง ์๊ฐ์ ํ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ฆ๊ฐํ์ง ์๋๋ค๋ ์ ์ ์ ์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ฐ๋ผ์ ํ ํฌ๊ธฐ๊ฐ ์ ํ ๋ผ๋ฐ์ดํธ์ ๋ฌํ๋ ๊ฒฝ์ฐ์๋ ์ผ์ ์ค์ง ์๊ฐ์ ์ฌ์ ํ โโ๋ง์ดํฌ๋ก์ด ๋จ์๋ก ์ธก์ ๋ฉ๋๋ค. ZGC๋ ์งง์ ๋๊ธฐ ์๊ฐ๊ณผ ๋์ ํ์ฅ์ฑ์ ์ ๊ณตํ์ง๋ง ์ฒ๋ฆฌ๋ ๋น์ฉ์ G1์ ๋นํด ์ฝ 10% ๋ฎ์ต๋๋ค. ์ ํํ ์ฒ๋ฆฌ๋ ๊ฐ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๋์์ธ, ์์คํ ์ํคํ ์ฒ ๋ฐ ๋น์ฆ๋์ค ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.ZGC ์ฌ์ฉ
G1์ JDK 9๋ถํฐ ๊ธฐ๋ณธ ๊ฐ๋น์ง ์์ง๊ธฐ์ด๋ฏ๋ก ZGC๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด VM ํ๋๊ทธ -XX:+UseZGC๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค. ZGC๋ฅผ ์ฌ์ฉํ ๋ ๊ฐ์ฅ ์ค์ํ ๊ตฌ์ฑ์ ์ต๋ ํ ํฌ๊ธฐ์ธ -Xmx๋ฅผ ์ค์ ํ๋ ๊ฒ์ ๋๋ค. ํ ํฌ๊ธฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ผ์ด๋ธ ์ธํธ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ ๋งํผ ์ปค์ผ ํฉ๋๋ค. ๋ํ ๊ฐ๋น์ง ์์ง์ ์ํํ๋ ค๋ฉด ์ถ๊ฐ ์์ฝ์ด ์์ด์ผ ํฉ๋๋ค. ํ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ด ๋ง์์๋ก ๊ฐ๋น์ง ์์ง ๋น๋๊ฐ ์ค์ด๋ญ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋๊ณผ ๊ท ํ์ ์ด๋ฃจ์ด์ผ ํฉ๋๋ค.ZGC์ ์ถ๊ฐ ๊ฐ๋ฐ
JDK 15์ ํ๋ก๋์ ๊ธฐ๋ฅ์ผ๋ก ์ถ์๋ ์ดํ ZGC๋ ๊ณ์ํด์ ํ๋ฐํ๊ฒ ๊ฐ๋ฐ๋์์ต๋๋ค. JDK 16์ด ์ถ์๋๋ฉด์ ์ค๋ ๋ ์คํ ๋ณ๋ ฌ ์ฒ๋ฆฌ(JEP 376)๊ฐ ๋์ ๋์์ผ๋ฉฐ JDK 18์๋ ํ ์ค๋ณต ์ ๊ฑฐ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค. ์์ผ๋ก๋ ZGC๊ฐ ๋ค์ธ๋ํ๋ ์์ ์ด์ง๋ง, ์ด ๊ฐ์ ์ฌํญ์ ๊ตฌํํ๊ธฐ ์ํ ๊ตฌ์ฒด์ ์ธ ๊ธฐ๊ฐ์ ์์ง ์ ํด์ง์ง ์์์ต๋๋ค.ZDC์ ๋ํ ์ถ๊ฐ ์ ๋ณด
- JEP 377
- JEP 376
- ZGC - ๋๊ธฐ ์๊ฐ์ด ์งง์ ๊ฐ๋น์ง ์์ง์ ๋ฏธ๋๊ฐ ์ฌ๊ธฐ์ ์์ต๋๋ค
- ๊ณต์ ZGC ๋ฌธ์
Java์์ HashMap, LinkedHashMap ๋ฐ TreeMap์ ์ฐจ์ด์ ์ ๋ฌด์์ ๋๊น?
์ถ์ฒ: Rrtutors Java ํ๋ก๊ทธ๋จ์ ํค-๊ฐ ์์ ์ ์ฅํ๋ ค๋ ๊ฒฝ์ฐ Java ์ปฌ๋ ์ ์ ํ์์ ๋ฐ๋ผ ์ด์ ๋ํ ๋ค์ํ ์ต์ ์ ์ ๊ณตํฉ๋๋ค. ์ฌ๊ธฐ์๋ LinkedHashmap , HashMap ๋ฐ TreeMap์ด ํฌํจ๋ฉ๋๋ค . ์ด ์ธ ํด๋์ค์ ์ฃผ์ ์ฐจ์ด์ ์ ๋ด๋ถ ๊ตฌํ๊ณผ ํน์ ๊ฒฝ์ฐ์ ํน์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ต๋๋ค.Java์์ HashMap, LinkedHashMap ๋ฐ TreeMap์ ์ฐจ์ด์
๊ตฌํ, ์์, ์ ๋ ฌ, Null ํค ๋ฐ ๊ฐ ์ง์์ ๊ธฐ๋ฐ์ผ๋ก ์ธ๊ธ๋ ์ธ ๊ฐ์ง ํด๋์ค ๊ฐ์ ์ฃผ์ ์ฐจ์ด์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.๊ตฌํ
HashMap ๊ณผ LinkedHashMap์ ๋ชจ๋ Map ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๋ฐ๋ฉด TreeMap์ Map , NavigableMap ๋ฐ vSortedMap ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํฉ๋๋ค . LinkedHashMap์ ์ด์ค ์ฐ๊ฒฐ ๋ชฉ๋ก ๋ฒํท์ผ๋ก ๊ตฌํ๋๊ณ , HashMap์ ํด์ ํ ์ด๋ธ๋ก ๊ตฌํ๋๋ฉฐ, TreeMap ์ ํธ๋ฆฌ๋ก ๊ตฌํ๋ฉ๋๋ค.์ฃผ๋ฌธ ๋ฐ ์ ๋ ฌ
-
HashMap์ ๋ฐ๋ณต ์์์ ๊ดํด ์ด๋ ํ ๋ณด์ฅ๋ ํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์๋ก์ด ์์๊ฐ ์ถ๊ฐ๋๋ฉด ์์ ํ ๋ฐ๋ ์ ์์ต๋๋ค.
-
LinkedHashMap์ ํญ๋ชฉ์ด ๋งต์ ๋ฐฐ์น๋ ์์๋๋ก ๋ฐ๋ณต๋ฉ๋๋ค.
-
TreeMap์ CompareTo() ๋ฉ์๋ (๋๋ ์ธ๋ถ Comparator) ์ ๋ฐ๋ผ ํค์ "์์ฐ ์์"์ ๋ฐ๋ผ ๋ฐ๋ณตํฉ๋๋ค . ๋ํ ์ ๋ ฌ ์์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ ๋ฉ์๋๊ฐ ํฌํจ๋ SortedMap ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํฉ๋๋ค.
Null ํค ๋ฐ ๊ฐ
HashMaps ์ LinkedHashMap์ ํค ๊ฐ๋ฟ๋ง ์๋๋ผ null ๊ฐ๋ ์ง์ํ๋ ๋ฐ๋ฉด, TreeMaps๋ ์์ฐ ์์ ์ ํ์ ์ง์ํ๋ฏ๋ก null ๊ฐ์ ์ง์ํ์ง ์์ต๋๋ค. ์๊ฐ์ ์์๋ฅผ ์ํด HashMap , LinkedHashMap ๋ฐ TreeMap ์ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค .import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;
public class HashMap_LinkedHashMap_TreeMap {
public static void main(String[] args) {
Map Treemapu = new TreeMap();
Treemapu.put("First", "Java");
Treemapu.put("Second", "Python");
System.out.println("TreeMap values are: \n" + Treemapu);
Map Hashimapu = new HashMap();
Hashimapu.put("First", "Java");
Hashimapu.put("Second", "Python");
System.out.println("HashMap Values are: \n" + Hashimapu);
Map LinkedHashiMapu = new LinkedHashMap();
LinkedHashiMapu.put("First", "Java");
LinkedHashiMapu.put("Second", "Python");
System.out.println("LinkedHashMap values are: \n" + LinkedHashiMapu);
}
}
์ถ๋ ฅ์์ ์ฐ๋ฆฌ๋ ๋ค์์ ์ป์ต๋๋ค:
-
HashMap์ ํค ํด์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋งต์ ๋๋ค. O(1) ๊ฐ์ ธ์ค๊ธฐ/๋ฃ๊ธฐ ์์ ์ ์ง์ํฉ๋๋ค. ํค์๋ ์ผ๊ด๋ hashCode() ๋ฐ equals() ๊ตฌํ์ด ์์ด์ผ ํฉ๋๋ค .
-
LinkedHashMap์ HashMap ๊ณผ ๋งค์ฐ ์ ์ฌ ํ์ง๋ง ์์๊ฐ ์ถ๊ฐ(๋๋ ์ก์ธ์ค)๋๋ ์์๊ฐ ์์ผ๋ฏ๋ก ๋ฐ๋ณต ์์๋ ๋ฐฐ์น ์์(๋๋ ๋์์ธ ๋งค๊ฐ๋ณ์์ ๋ฐ๋ผ ์ก์ธ์ค ์์)์ ๋์ผํฉ๋๋ค.
-
TreeMap ์ ํธ๋ฆฌ ๊ธฐ๋ฐ ๋งคํ์ ๋๋ค. ๋ฃ๊ธฐ/๊ฐ์ ธ์ค๊ธฐ ์์ ์๋ O(log n) ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค. ์ด๋ฅผ ์ํด์๋ ์์์ ๋น๊ต ๋๋ ๋น๊ต๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ์ผ์ข ์ ๋น๊ต ๋ฉ์ปค๋์ฆ์ด ์์ด์ผ ํฉ๋๋ค. ๋ฐ๋ณต ์์๋ ์ด ๋ฉ์ปค๋์ฆ์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค.
GO TO FULL VERSION