ìŒ | ì | í | ì | 목 | êž | í |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- redis ì¡°í
- prod docker-compose
- aws ì¿ í°
- docker ps -a
- íë¡ê·žëëšžì€
- íë¡ê·žëëšžì€ í©ì¹íììêž
- AWS Certified Solutions Architect - Associate
- docker-compose kafka
- íìŽíŒë°ìŽì
- JPA
- Kafka
- s3 log ì ì¥
- s3 ìŽë¯žì§ ì ì¥
- s3 ìŽë¯žì§ ë€ìŽë¡ë
- ìë°
- Codedeploy ì€ë¥
- ë€ì€ 컚í ìŽë
- nGrinder
- @RestControllerAdvice
- docker compose
- ì íšì€ ì€ìŒì€ë¬
- Entity
- ìë² í°ì§ë ë컀 ì¬ì€í
- docker
- private subnet ec2 ë¡ì»¬ ì ì
- aws saa í©ê²©
- íë¡ê·žëëšžì€ ì»¬ë¬ë§ë¶
- ì íšì€ ë¹ë ì€ë¥
- redis í ì€ížìœë
- ì€ííë 믞ì€
- Today
- Total
ðð¢ðð âððð ððð¡ðð ððððâ§
[Review] JVM ë°ë°ë¥ê¹ì§ íí€ì¹êž° - 1. ìë° êž°ì ìì€í 볞묞
[Review] JVM ë°ë°ë¥ê¹ì§ íí€ì¹êž° - 1. ìë° êž°ì ìì€í
ð€Ryusunð€ 2025. 2. 1. 10:31ìë°
- íë¡ê·žëë° ìžìŽë¿ ìëëŒ ì¬ë¬ê°ì§ ìíížìšìŽì ëª ìžë¡ 구ì±ë êž°ì ìì€í
- í¬ë¡ì€ íë«íŒ ìíížìšìŽë¥Œ ê°ë°íê³ ë°°í¬íëë° íìí 몚ë ê²ì ì ê³µ
- ìë¹í ìì í ë©ëªšëŠ¬ êŽëŠ¬ ìì€í ì ê°ì·ë€.
- ë°íìì í«ìœë륌 ê°ì§, 컎íìŒíê³ ìµì ííì¬ ìë° ì í늬ìŒìŽì ìŽ ìµìì ì±ë¥ì ëŽëë¡ ëìì€ë€.
- íì€ API íë¶, ìë§ì êž°ì 곌 ì€í ìì€ ì»€ë®€ëí°ìì ì ê³µíë ë€ìí êž°ë¥ì ìë íí° ëŒìŽëžë¬ëŠ¬ íì©ìŽ ê°ë¥íë€.
ìë° êž°ì ìì€í
ìŒë°ì ìŒë¡ ìë° ê°ì ëšžì ììì ëìíë ìœí늰, íŽë¡ì , JRuby, ê·žë£šë¹ ë± íë¡ê·žëë° ìžìŽì ê·ž ìž êŽë š íë¡ê·žëšë€ë ìë° êž°ì ìì€í ì ìíë€.
ì íµì ìŒë¡ ìë° êž°ì ìì€í ì ë€ì ììë€ì í¬íšíë€.
- ìë° íë¡ê·žëë° ìžìŽ
- (ë€ìí íëìšìŽ íë«íŒì©) ìë° ê°ì ëšžì 구í
- íŽëì€ íìŒ í¬ë§·
- ìë° íŽëì€ ëŒìŽëžë¬ëŠ¬ API(íì€ API)
- ë€ë¥ž êž°ì 곌 ì€í ìì€ ì»€ë®€ëí°ìì ì ê³µíë ìë íí° íŽëì€ ëŒìŽëžë¬ëŠ¬
JDK
- ìë° íë¡ê·žëë° ìžìŽ, ìë° ê°ìëšžì , ìë° íŽëì€ ëŒìŽëžë¬ëŠ¬ë¥Œ 묶ìê².
- ìë° íë¡ê·žëš ê°ë°ì íìí ìµìíì í겜
- JDK ì©ìŽë ìë° êž°ì ìì€í ì 첎 ìžë륌 ì§ì¹í ëë ì죌 ì°ìžë€.
JRE
- ìë° SE APIì ìë° ê°ì ëšžì ê·žëŠ¬ê³ ë°°í¬ êž°ì ê¹ì§ 묶ìê².
- ìë° íë¡ê·žëšì ì€íí ì ìë íì€ í겜ì ì ê³µ
í«ì€í ê°ìëšžì
ìë²ì© ì íì²ëŒ ì¥êž°ê° ìŽì©ëë ì í늬ìŒìŽì ììë ì죌 ì€íëë í« ìœë륌 íì§íì¬ ë€ìŽí°ëž ìœëë¡ ì»ŽíìŒíë€.
ë¶ê³Œ ëªë ì ë§ íëëŒë ë§ì CPUìœìŽë¥Œ ì¬ì©í ì ììê³ CPUìœìŽê° íëë¿ìž ì¬ì©ì륌 ìíŽ ë§ë€ìŽì§ ê²ìŽ HotSpot íŽëŒìŽìžíž 컎íìŒë¬ìŽë€.
í«ì€í ê°ì ëšžì ì Ʞ볞ì ìŒë¡ JIT 컎íìŒë¬ë¥Œ ëê° ëŽì¥íê³ ìë€.
- íŽëŒìŽìžíž 컎íìŒë¬(C1 컎íìŒë¬)
- 컎íìŒ ìëê° ë¹ ë¥ž ëì ìµì í륌 ì ê²íë€.
- ìë² ì»ŽíìŒë¬ë³Žë€ 뚌ì 컎íìŒì ììíë€.
- Start-Up ìê°ìŽ ë¹ ë¥Žë€. íì§ë§ ìµì íê° ëíêž° ë묞ì ìœëì€íì ìë²ê° ë ë¹ ë¥Žë€.
- ìë² ì»ŽíìŒë¬(C2 컎íìŒë¬)
- 컎íìŒì ì ë§ì ì 볎륌 ìì§íì¬ ì»ŽíìŒ ìëë ë늬ì§ë§, ë ë§ì ìµì íì ì€ì ì ëë€.
- ìë² ì»ŽíìŒë¬ë ì ëë¡ ëªšë ìœë륌 컎íìŒíì§ ìëë€
ì¬êž°ì ìží°í늬í°ê¹ì§ í¬íšíì¬ ìŽ 3ê°ì ì€í ë©ì»€ëìŠìŽ íë ¥íì¬ í«ì€í ê°ì ëšžì ì ì€í ìëž ìì€í ì 구ì±íë€.
ìì ìë HotSpot JVMìŽ ì£Œë¡ ì¬ì©ëìì§ë§, ì§êžì GraalVMìŽë OpenJ9 ë± ë€ìí JVM 구íìŽ ì£Œëª©ë°ê³ ìë€.
GraalVM컎íìŒë¬ë C2컎íìŒë¬ë¥Œ ë첎í 목ì ìŒë¡ í«ì€íì ëì ëìë€.
GraalVM
- Oracleìì ê°ë°
- ë€ìŽí°ëž ìŽë¯žì§ 컎íìŒ ì§ì(ìŠ, ë¹ ë¥ž ìì ìëì ë®ì ë©ëªšëŠ¬ ì¬ì©)
- ë€ì€ ìžìŽ ì§ì(JavaScript, Python, Ruby ë±)
- íŽëŒì°ë ë€ìŽí°ëž ì í늬ìŒìŽì ì ì í©
- íì¬ íŽëŒì°ë ë€ìŽí°ëž í겜ìŽë 컚í ìŽë êž°ë° ë°°í¬ììë GraalVM곌 ê°ì 겜ëíë JVMìŽ ì ížëë 겜ì°ê° ë§ë€.
ì¥ì
- 컎íìŒë ìœëì ì¶ë ¥ íì§ìŽ ì¢ë€.
- ê°ë° íšìšê³Œ íì¥ì± ìž¡ë©Žììë C2ì ë¹êµíêž° ìŽë €ìž ë§íŒ íë¥íë€.
- ë¶ë¶ íì¶ ë¶ì(partial escape analysis) ì²ëŒ C2 ë³Žë€ ë³µì¡í ìµì íë ìíí ì ìë€.
- ëí ë§ì¶€í ê°ì ë±ì ì¶ê°íŽ 공격ì ììž¡ ìµì í(aggressivfe speculative optimization)륌 ì ì©íêž°ë ììíë€.
ë€ìŽí°ëžë¥Œ í¥í ë°ê±žì
ì¥ìê° ì€íí íìê° ìê±°ë í¬êž°ê° ìì ì í늬ìŒìŽì ì ê²œì° ìë°ë¡ ê°ë°íë©Ž ëšì ìŽ ìë€.
- HelloWorld륌 ì€ííë € íŽë ë¶íìí JRE ê° íìí ì
- ì í늬ìŒìŽì ìí€í ì²ì ì€ì¬ì ê±°ëí ëšìŒ ìí€í ì² -> ìì ë§ìŽí¬ë¡ìë¹ì€ ìí€í ì² ë¡ ë¹ ë¥Žê² ì®ê²šê°ê³ ìì§ë§, ìë°ë ìŽ ì¶ìžì ì ë§ì§ ìëë€.
ë§ìŽí¬ë¡ ìë¹ì€ ìí€í ì²ììë ë¶í ë ìë¹ì€ ê°ê°ìŽ ë§ì ë©ëªšëŠ¬ë¥Œ ìž ìŒì ìë€. ê³ ê°ì©ì± ìë¹ì€ íŽë¬ì€í°ë¥Œ íì©íë©Ž ìžì ë ì§ ì€ëšíê³ ì ë°ìŽíží ì ìêž°ë묞ì, ëšìŒ ìë¹ì€ë¥Œ ì€ëš ììŽ ì€ííêž° ìíŽ ëŠ¬ìì€ê° ì€ìŽë ë€. íì§ë§ ìë°ë 구ë ìê°ìŽ êžžê³ ìµê³ ì±ë¥ì ëŽêž° ê¹ì§ ììŽìŽ íìíë¯ë¡ ë§ìŽí¬ë¡ ìë¹ì€ê° ì구íë í¹ì±ê³Œë ë°ëìŽë€.
ìŽë¬í ëšì ìŒë¡ ìµê·Œ JDK ìë ì í늬ìŒìŽì íŽëì€ ë°ìŽí° ê³µì (Application Class Data Sharing, AppCDS)ì ë žìµ(no-op) ê°ë¹ì§ 컬ë í°ìž ì¡ì€ë¡ ë±ì êž°ì ìŽ í¬íšëìë€.
AppCDS(Application Class Data Sharing, AppCDS)
- ë¡ë©í íŽëì€ ì 볎륌 ìºìíŽ ëìŽ ë€ìë² êµ¬ë ìê°ì ì€ìŽë êž°ì
ì¡ì€ë¡
- ë©ëªšëŠ¬ë¥Œ í ë¹ë§ íŽì€ ë¿ íìë íì§ìë 컀ë í°
- ê°ëší ìì ì ë¹ ë¥Žê² ì²ëŠ¬í ìŠì ì¢ ë£íë ì í늬ìŒìŽì ì ì í©
ë êžì§ì ìž êž°ì ë¡ë ì í늬ìŒìŽì ì ì€ííêž° ì ì ë€ìŽí°ëž ìœëë¡ ì»ŽíìŒíŽëë AOT 컎íìŒìŽ ìë€.
AOT(Ahead of Time)
ì¥ì
- ìë° ê°ìëšžì ì ì í늬ìŒìŽì ì ì°ì ì€ííí JIT 컎íìŒì ìšì ë¹ë²íê² ì€íëë ë¡ì§ì ë€ìŽí°ëž ìœëë¡ ë°ê¿ ì€ííë€.
- íì§ë§ 컎íìŒì 믞늬 íŽëë©Ž ììŽ ê³Œì ì 걎ë ë°ê³ ì²ìë¶í° ë€ìŽí°ëž ìœë륌 ì€íí ì ìë€.
- ìê° ìë° ììŽ íë¡ê·žëš ì 첎륌 ì벜íê² ë¶ìíì¬ ìµì íí ì ìë€.
ëšì
- íë² ìì±íë©Ž ìŽëìë ì€íëë ìë°ì ë€ë¥Žê², íëìšìŽì ìŽì 첎ì ë³ë¡ ë°ë¡ 컎íìŒíŽ ë°°í¬íŽìŒíë€.
- 컎íìŒí ìœëì ëí 몚ë ê²ì 컎íìŒ íìì ìì ììŽìŒ íë¯ë¡, ìë° ëì ë§í¬ í¹ì±ìŽ í¬ê² ì€ìŽë ë€.
ìëžì€ížë ìŽíž VM(Substrate VM)
- ì¬ì 컎íìŒë ë€ìŽí°ëž ìœë륌 í«ì€í ê°ì ëšžì ììŽ ì€íëë êž°ì ë¡ ë ìì ìž ììž ì²ëŠ¬, ì€ë ë êŽëŠ¬, ë©ëªšëŠ¬ êŽëŠ¬, ìë° ë€ìŽí°ëž ìží°íìŽì€ ì ê°ì¶ ìì ë°íì í겜
ì¥ì
- ìë° ê°ì ëšžì ìŽ ìííë ìŽêž°í 곌ì ì 걎ëë°ê³ , íë¡ê·žëšì 곧ë°ë¡ ì€ííì¬ ìŽêž° 구ë ìê°ì ì€ìžë€.
- ë©ëªšëŠ¬ ì¬ì©ëì í¬ê² ì€ì¬ì€ë€.(í«ì€í ê°ì ëšžì ì ê·ž ì첎ë¡ë ë§ì ë©ëªšëŠ¬ë¥Œ ì¬ì©íë€)
ëšì
- 컎íìŒë¬ê° ì°Ÿìì ìë ìœëë íŽëì€ ëŒìŽëžë¬ëŠ¬ë¥Œ ëì ìŒë¡ ìœìŽë€ìŒì ììŽ íë¡ê·žëšìŽ ìê²°ë ííì¬ìŒ íë€.
ì°žê³
1. https://product.kyobobook.co.kr/detail/S000213057051
JVM ë°ë°ë¥ê¹ì§ íí€ì¹êž° | ì ì°ìŠë° - êµë³Žë¬žê³
JVM ë°ë°ë¥ê¹ì§ íí€ì¹êž° | ìë° ê°ì ëšžì ì ê¹ìí ëŽë¶ë¥Œ í¥íŽ ë ëë í¥ë¯žì§ì§í 몚íC·C++륌 ì¬ì©íŽ ì£Œë¡ íë¡ê·žëë°ì íë ìì ê¹ë€ë¡ìŽ ë©ëªšëŠ¬ êŽëŠ¬ì íë«íŒ ìŽìì± ë¬žì ë ê°ë°ìë€ì
product.kyobobook.co.kr
2. https://isaac1102.github.io/2021/01/16/hotspotjvm
[ JAVA ] HotSpot JVM
ì¬ì€ HotSpotìŽëŒë ëšìŽë¥Œ ë€ìì ë ê°ì¥ 뚌ì ë ì€ë¥ž ì믞ë í«ì€í ëë í«ì€í¿(ììŽ: hotspot)ì ì€ë§íží°, ë žížë¶ì í¬íší ìŽë ëšë§êž°ë¡ ëŒì°í° ë± ë¬Žì ì¡ìžì€ í¬ìžížê° ì€ì¹ë ì§ììì 묎
isaac1102.github.io
'ð£ð¿ðŒðŽð¿ð®ðºðºð¶ð»ðŽð» > ððð¯ð' 칎í ê³ ëŠ¬ì ë€ë¥ž êž
[Java] íë¡ê·žëëšžì€ ì»¬ë¬ë§ë¶ & íë¡ê·žëëšžì€ í©ì¹íììêž (0) | 2024.04.11 |
---|---|
[Java] Action Tag (0) | 2022.10.28 |
[Java] JSP, Directive (0) | 2022.10.27 |
[Java] PriorityQueue (0) | 2022.10.19 |
[Java] Generic Method ì ë€ëŠ ë©ìë (0) | 2022.10.12 |