๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’Š Java/- Java Lang13

[์กฐ๊ธˆ ๋” ๊นŠ์€ Java] JVM์˜ Runtime Data Area, Execution Engine, Garbage Collection ์— ๋Œ€ํ•ด์„œ ์ž๋ฐ”๋ฅผ ๊ณต๋ถ€ํ•ด๋ณด์•˜๋‹ค๋ฉด ์ตํžˆ ๋“ค์—ˆ์„ JVM, Java Virtual Machine ์— ๋Œ€ํ•ด์„œ ์ด์•ผ๊ธฐํ•ด๋ณด๋ ค ํ•œ๋‹ค. ๋ง‰์—ฐํ•˜๊ฒŒ JVM ์ด ๋™์ž‘ํ•˜๊ณ  JVM์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”Œ๋žซํผ์— ๋…๋ฆฝ์ ์ด๋ฉฐ Garbage Collection ์œผ๋กœ ์žฅ์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งŽ์„ ๊ฒƒ์ด๋‹ค. ์˜ค๋Š˜์€ JRE์˜ ๊ตฌ์„ฑ์š”์†Œ์ธ JVM์ด ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜๊ณ  Garbage Collection ์ด ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค. JVM ์ด๋ž€? ์ง€๋‚œ 2๋ฒˆ์˜ ์‹œ๊ฐ„์— ๊ฑฐ์ณ ์šฐ๋ฆฌ๋Š” Java Bytecode์™€ Java ClassLoader ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋‹ค. ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” ์–ด๋–ป๊ฒŒ ์ž๋ฐ” ํŒŒ์ผ์ด ์ปดํŒŒ์ผ๋˜์–ด ํด๋ž˜์Šค ํŒŒ์ผ๋กœ ๋ณ€ํ™˜์ด ๋˜๊ณ , ์–ด๋–ป๊ฒŒ ํด๋ž˜์Šค๋กœ๋”์— ์˜ํ•ด์„œ ๋™์  ์ ์žฌ๋˜๋ฉฐ verification ์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์•˜๋‹ค. ์˜ค๋Š˜์€ ๊ทธ ์ดํ›„.. 2021. 12. 5.
[์กฐ๊ธˆ ๋” ๊นŠ์€ Java] JRE์˜ Classloader ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž ์˜ค๋Š˜์€ JRE์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ์š”์†Œ์ธ Classloader์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค ํ•œ๋‹ค. ์ง€๋‚œ ์‹œ๊ฐ„ ์šฐ๋ฆฌ๋Š” Java Bytecode ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋‹ค. [์กฐ๊ธˆ ๋” ๊นŠ์€ Java] Java Bytecode ๋ฅผ ์•Œ์•„๋ณด์ž (์ž๋ฐ”๋ฅผ ์ปดํŒŒ์ผํ•˜๋ฉด ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚ ๊นŒ?) ์šฐ๋ฆฌ๋Š” ๋งŽ์€ ์‹œ๊ฐ„ Java๋ฅผ ์ด์šฉํ•ด์„œ ๋‹ค์–‘ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ๋“ค์—ˆ๋˜ ์†Œ๋ฆฌ๊ฐ€ ์žˆ๋‹ค. Java๋Š” JVM ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”Œ๋žซํผ์— ์ข…์†์ ์ด์ง€ ์•Š๊ณ  ์ด์‹์„ฑ์ด ๋›ฐ์–ด๋‚˜๋‹ค. ๊ทธ ์ด์œ ์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐํ•ด๋ณธ ๊ฒฝ wonit.tistory.com ์šฐ๋ฆฌ๊ฐ€ .java ํŒŒ์ผ์„ ์ปดํŒŒ์ผํ•œ๋‹ค๋ฉด .class ๋ผ๋Š” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜์ด๋˜๊ณ  JVM์ด ํ•ด๋‹น class ํŒŒ์ผ์„ ๋™์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ณผ์ •์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ ClassLoader ์ด๋‹ค. Java ClassLoader Java.. 2021. 12. 2.
[์กฐ๊ธˆ ๋” ๊นŠ์€ Java] Java Bytecode ๋ฅผ ์•Œ์•„๋ณด์ž (์ž๋ฐ”๋ฅผ ์ปดํŒŒ์ผํ•˜๋ฉด ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚ ๊นŒ?) ์šฐ๋ฆฌ๋Š” ๋งŽ์€ ์‹œ๊ฐ„ Java๋ฅผ ์ด์šฉํ•ด์„œ ๋‹ค์–‘ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ๋“ค์—ˆ๋˜ ์†Œ๋ฆฌ๊ฐ€ ์žˆ๋‹ค. Java๋Š” JVM ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”Œ๋žซํผ์— ์ข…์†์ ์ด์ง€ ์•Š๊ณ  ์ด์‹์„ฑ์ด ๋›ฐ์–ด๋‚˜๋‹ค. ๊ทธ ์ด์œ ์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐํ•ด๋ณธ ๊ฒฝํ—˜์ด ์žˆ๋Š”๊ฐ€? ์˜ค๋Š˜์€ ์œ„์˜ JVM๊ณผ ์ด์‹์„ฑ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๊ผญ ์•Œ์•„์•ผ ํ•˜๋Š” Java Bytecode ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค ํ•œ๋‹ค. Java Bytecode, ์ž๋ฐ” ๋ฐ”์ดํŠธ์ฝ”๋“œ ์šฐ๋ฆฌ๋Š” Java ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด์„œ JDK๋ฅผ ์„ค์น˜ํ•˜๊ณ  Java ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ JRE ๋ฅผ ์„ค์น˜ํ•œ๋‹ค. ๋˜ํ•œ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ Compile ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด ์ปดํŒŒ์ผ์€ ๋ฐ”๋กœ JDK๋‚˜ JRE ์— ํ•จ๊ป˜ ํฌํ•จ๋˜๋Š” javac.exe ์‹คํ–‰ํŒŒ์ผ์ด ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ .java ํŒŒ์ผ์„ .. 2021. 11. 25.
[์กฐ๊ธˆ ๋” ๊นŠ์€ Java] String ๊ณผ String Constant Pool ์šฐ๋ฆฌ๋Š” Java ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์•„์ฃผ ๋งŽ์€ String ์˜ Literal ์„ ์ด์šฉํ•˜๊ฒŒ ๋œ๋‹ค. ์˜ค๋Š˜์€ ๊ทธ String์ด ์–ด๋–ค ํŠน์„ฑ์„ ๊ฐ€์กŒ๋Š”์ง€ ์กฐ๊ธˆ ๋‹ค๋ฅธ ๊ฐ๋„์—์„œ ๋ด๋ณด๋ ค ํ•œ๋‹ค. String ์€? String ์€ Java ์—์„œ ์ œ๊ณตํ•˜๋Š” ํŠน๋ณ„ํ•œ ์ž๋ฃŒํ˜•์ด๋‹ค. ์šฐ๋ฆฌ๋Š” String ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ด์šฉํ•˜๊ฒŒ ๋œ๋‹ค. "..." Literal ์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• new ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด String ๊ฐ์ฒด์˜ ์ƒ์„ฑ์ž๋กœ value ์ฃผ์ž… ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•ด์„œ String ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด, ์šฐ๋ฆฌ๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ƒ๊ฐํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ์ด ๋œ๋‹ค. ์ž๋ฐ”์—์„œ ๋ชจ๋“  String ์€ constant ํ˜•ํƒœ๋กœ ํ•œ ๋ฒˆ ์ƒ์„ฑ์ด ๋œ๋‹ค๋ฉด update ๋ผ๋Š” ๊ฐœ๋…์ด ์‚ฌ๋ผ์ง„๋‹ค. ์ฆ‰, Java ์˜ String ์€.. 2021. 11. 23.