๋กœ์ผ“๐Ÿพ
article thumbnail
๋ฐ˜์‘ํ˜•

 

์ดํด๋ฆฝ์Šค์—์„œ *.java๋ฅผ  ๋‹จ์ถ•ํ‚ค ๋ˆŒ๋Ÿฌ์„œ ์‹คํ–‰์‹œํ‚ฌ ์ค„๋งŒ ์•Œ์•˜์ง€ *.java ํŒŒ์ผ์ด ์–ด๋– ํ•œ ๊ณผ์ •์„ ๊ฑฐ์ณ ์‹คํ–‰์ด ๋˜๋Š”์ง€๋Š” ์•Œ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์–ด๋–ค ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ,  ์–ด๋””์„œ ๋งŽ์ด ๋“ค์–ด๋ณธ JVM์€ ๋ฌด์—‡์ธ์ง€ ๊ทธ๋ฆฌ๊ณ  ์ž๋ฐ”์—์„œ *.java๋ฅผ ์–ด๋–ป๊ฒŒ ์ปดํ“จํ„ฐ๊ฐ€ ์‹คํ–‰์‹œํ‚ค๋Š” ์ง€์— ๋Œ€ํ•œ ๊ณผ์ •์„ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

ํ‹€๋ฆฐ ๋ถ€๋ถ„์ด๋‚˜ ์งˆ๋ฌธ ์‚ฌํ•ญ์ด ์žˆ์œผ์‹œ๋ฉด ์–ธ์ œ๋“ ์ง€ ๋ง์”€ํ•ด์ฃผ์„ธ์š” :)

 

 

์ „์ฒด์ ์ธ ์ž๋ฐ”์˜ ์‹คํ–‰๊ณผ์ •

 

 

๊ทธ๋ฆผ (1)

 

์œ„ ๊ทธ๋ฆผ์€ ์ „์ฒด์ ์ธ ์ž๋ฐ”์˜ ์‹คํ–‰๊ณผ์ •์„ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ๋” ๊นŠ์ˆ™์ด ํŒŒ๊ณ ๋“ค๋ฉด ์ด๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋งŽ์€ ๊ฒƒ๋“ค์ด ์กด์žฌํ•˜์ง€๋งŒ, ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ด์ •๋„๋งŒ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

ํ•ต์‹ฌํ‚ค์›Œ๋“œ

*Java Compiler , *JVM , *Interpreter , *JIT compiler 

 

 

Java Compiler with binary code, byte code

 

Compiler(์ดํ•˜ ์ปดํŒŒ์ผ๋Ÿฌ) ๋Š” ๋ฒˆ์—ญํ•˜๋ฉด 'ํ•ด์„๊ธฐ'๋ผ๋Š” ์˜๋ฏธ๋กœ ์ธ๊ฐ„์ด ์‚ฌ์šฉํ•˜๋Š” ๊ณ ๋ ˆ๋ฒจ์–ธ์–ด๋ฅผ ๊ธฐ๊ณ„๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„์–ด(์ €๋ ˆ๋ฒจ์–ธ์–ด)๋กœ ํ•ด์„ํ•ด์ฃผ๋Š” ๋ฒˆ์—ญ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. 

 

 

์ผ๋ฐ˜์ ์œผ๋กœ ์†Œ์ŠคํŒŒ์ผ ์„ ์ปดํŒŒ์ผํ•œ ํŒŒ์ผ์„ ๋ชฉ์ ํŒŒ์ผ ์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ C, C++ ๊ฐ™์€ ์–ธ์–ด๋Š” ๋ชฉ์ ํŒŒ์ผ์ด ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ์˜ ํ˜•ํƒœ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ž๋ฐ”์—์„œ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง„ ๋ฐ”์ดํŠธ ํŒŒ์ผ๋กœ ๋ณ€ํ™˜์ด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐ”์ดํŠธ ํŒŒ์ผ์ด ๊ทธ๋ฆผ(1) ์— ๋‚˜์˜ค๋Š” .class ํŒŒ์ผ ์ž…๋‹ˆ๋‹ค.

 

*์†Œ์ŠคํŒŒ์ผ : ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•˜๋Š” ๊ณ ๋ ˆ๋ฒจ์–ธ์–ด์ธ ์†Œ์Šค์ฝ”๋“œ๋กœ ๊ตฌ์„ฑ๋œ ํŒŒ์ผ ex. *.java, *.c

*๋ชฉ์ ํŒŒ์ผ : ์†Œ์ŠคํŒŒ์ผ์„ ์ปดํŒŒ์ผํ•ด์„œ ์ƒ๊ธด ํŒŒ์ผ ex. ๋ฐ”์ดํŠธ์ฝ”๋“œ, ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ

 

๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ์ž‘์„ฑ๋œ .class ํŒŒ์ผ์€ ๊ธฐ๊ณ„(ex. JVM)๊ฐ€ ์ฝ๊ธฐ ํŽธํ•˜๋„๋ก ๋งŒ๋“ค์–ด ๋†“์€ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์„ JVM์ด ์ฝ์–ด๋“ค์—ฌ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ, ํด๋ž˜์Šค ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ชจ๋“  .class ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ๋“ค์ด๊ณ  ์ฝ”๋“œ๋ฅผ ๊ฒ€์ฆํ•œ ๋’ค ๋ฉ”๋ชจ๋ฆฌ๋กœ ์˜ฌ๋ฆฌ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ํด๋ž˜์Šค๊ฐ€ ์—†๊ฑฐ๋‚˜ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

 

์ดํด๋ฆฝ์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ mainClass๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  bin ํด๋”๋กœ ์ด๋™ํ•˜๋ฉด ๊ด€๋ จ .class ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ ๊ฑธ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .class ํŒŒ์ผ์€ ์ดํด๋ฆฝ์Šค์—์„œ ์†Œ์ŠคํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ €์žฅํ•  ๋•Œ ์ดํด๋ฆฝ์Šค์—์„œ ์ž๋™์œผ๋กœ ์ƒ์„ฑ ๋ฐ ๋ณ€๊ฒฝํ•ด์ค๋‹ˆ๋‹ค. ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋ฐ”์™€ ๊ฐ™์ด ๋งŒ์•ฝ ์ € .class ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‚ญ์ œํ–ˆ๋‹ค๊ณ  ๊ฑฑ์ •ํ•˜์‹ค ๊ฑด ์—†์Šต๋‹ˆ๋‹ค.

 

.class ํŒŒ์ผ์ด ์—†์–ด์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ดํด๋ฆฝ์Šค๊ฐ€ .class๋ฅผ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋งŒ์•ฝ .class๋ฅผ ๋ณต์›ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด .java ํŒŒ์ผ์„ ์•ฝ๊ฐ„ ์ˆ˜์ •ํ•œ ํ›„ ์ €์žฅ์„ ํ•˜๋ฉด ์ž๋™์œผ๋กœ .class๊ฐ€ ๋‹ค์‹œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. .class ํŒŒ์ผ์€ ๊ธฐ๊ณ„์–ด๋กœ ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ดํด๋ฆฝ์Šค ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ด์–ด์•ผ ์ œ๋Œ€๋กœ ๋œ ์ฝ”๋“œ๋ฅผ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ •๋ฆฌํ•ด๋ณด์ž๋ฉด, ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ๋Š” CPU๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด, ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋Š” ๊ฐ€์ƒ๋จธ์‹ (ex. JVM)์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๋Š” JVM์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์†Œ์ŠคํŒŒ์ผ(*.java)๋ฅผ ๋ชฉ์ ํŒŒ์ผ(*.class, ๋ฐ”์ดํŠธํŒŒ์ผ)๋กœ ๋ณ€ํ™˜์‹œ์ผœ์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ .class ํŒŒ์ผ์ด ์ตœ์ข…์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ํŒŒ์ผ์€ ์•„๋‹™๋‹ˆ๋‹ค. .java ํŒŒ์ผ์ด ์‹คํ–‰์ด ๋˜๋ ค๋ฉด ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ ๋‹ค์Œ์œผ๋กœ JVM์„ ๊ฑฐ์ณ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

(๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ์™€ ๋ฐ”์ดํŠธ ์ฝ”๋“œ ๊ด€๋ จ ๊ธ€)

 

์ž๋ฐ” ์ฝ”๋“œ์™€ ๋ฐ”์ดํŠธ ์ฝ”๋“œ

 

Java Virtual Machine 

 

JVM์€ Java Virtual Machine์˜ ์•ฝ์ž๋กœ ๋ฒˆ์—ญํ•˜๋ฉด ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ์ž…๋‹ˆ๋‹ค. ๊ฐ€์ƒ๋จธ์‹ ์€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌผ๋ฆฌ์  ๋จธ์‹ ๊ณผ ์œ ์‚ฌํ•œ ๋จธ์‹ ์„ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๊ตฌํ˜„ํ•œ ๊ฒƒ์œผ๋กœ JVM ์—ญ์‹œ ์ปดํŒŒ์ผ๋Ÿฌ๋กœ ๋ณ€ํ™˜๋œ .class ํŒŒ์ผ์„ Class Loader๋ฅผ ํ†ตํ•ด ์ฝ์–ด ๋“ค์—ฌ ์ž๋ฐ” API์™€ ํ•จ๊ป˜ ์‹คํ–‰์‹œํ‚ต๋‹ˆ๋‹ค.

 

์ž๋ฐ”์˜ ์žฅ์ ์ด๋ผํ•˜๋ฉด ์šด์˜์ฒด์ œ์˜ ๊ตฌ์• ๋ฅผ ๋ฐ›์ง€ ์•Š๋Š” ๋‹ค๋Š” ์ , ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•˜๋‹ค๋Š” ์ ์ธ๋ฐ ์ด๋ฅผ ๊ฐ€๋Šฅ์ผ€ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ JVM ์ž…๋‹ˆ๋‹ค.

 

JVM์—์„œ์˜ ์‹คํ–‰๊ณผ์ •

  1. Class Loader๋ฅผ ํ†ตํ•ด .class ํŒŒ์ผ๋“ค์„ JVM์— ์˜ฌ๋ฆฐ๋‹ค
  2. JVM์— ์žˆ๋Š” .class ํŒŒ์ผ๋“ค์„ Execution Engine์˜ Interpreter์™€ JIT Complier๋ฅผ ํ†ตํ•ด ํ•ด์„๋œ๋‹ค
  3. ํ•ด์„๋œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋Š” Runtime Data Areas ์— ๋ฐฐ์น˜๋˜์–ด ์‹ค์งˆ์ ์ธ ์ˆ˜ํ–‰์ด ์ด๋ฃจ์–ด์ง„๋‹ค

 

JVM์˜ Class Loader๋Š” ๋™์  ๋กœ๋”ฉ์„ ํ†ตํ•ด ํ•„์š”ํ•œ ํด๋ž˜์Šค๋“ค์„ ๋กœ๋”ฉ ๋ฐ ๋งํฌ ํ•˜์—ฌ Runtime Data Area์— ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธํ›„ Execution Engine์€ JVM์— ์˜ฌ๋ผ์˜จ ๋ฐ”์ดํŠธ ์ฝ”๋“œ(.class)๋“ค์„ ๋ช…๋ น์–ด ๋‹จ์œ„๋กœ ํ•˜๋‚˜์”ฉ ๊ฐ€์ ธ์™€์„œ ์‹คํ–‰์‹œํ‚ต๋‹ˆ๋‹ค. Execution Engine์€ Interpreter์™€ JIT compiler์— ์˜ํ•ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

 

*๋งํฌ : ์†Œ์Šค์ฝ”๋“œ ์–‘์ด ๋Š˜์–ด๋‚จ์— ๋”ฐ๋ผ ํ•œ ํŒŒ์ผ์— ๋ชจ๋“  ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜์–ด ํŒŒ์ผ๋“ค์€ ๋ถ„๋ฆฌํ•ด์•ผ ํ–ˆ๋Š”๋ฐ, ์ด๋Ÿฐ ์—ฌ๋Ÿฌ ์†Œ์ŠคํŒŒ์ผ๋“ค์„ ํ•˜๋‚˜๋กœ ํ•ฉ์น˜๋Š” ๊ฒƒ, ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋ง์ปค

 

C์—์„œ์˜ ์ปดํŒŒ์ผ ๊ณผ์ •

 

๋“ค์–ด๊ฐ€๊ธฐ ์•ž์„œInterpreter์˜ ๊ฐœ๋… ๋Œ€ํ•ด ์ž ๊น ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

Interpreter ๋ž€?

 

Interpreter(์ดํ•˜ ์ธํ„ฐํ”„๋ฆฌํ„ฐ)๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์ฒ˜๋Ÿผ ๊ณ ๋ ˆ๋ฒจ์–ธ์–ด๋ฅผ ๊ธฐ๊ณ„์–ด(์ €๋ ˆ๋ฒจ์–ธ์–ด)๋กœ ํ•ด์„ํ•ด์ฃผ๋Š” ๋ฒˆ์—ญ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ „์ฒด ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ๋ช…๋ น์–ด๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์žฌ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ˜๋ฉด ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋Š” ์†Œ์Šค์ฝ”๋“œ์˜ ๊ฐ ํ–‰์„ ์—ฐ์†์ ์œผ๋กœ ๋ถ„์„ํ•˜๋ฉฐ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ ํ–‰๋งˆ๋‹ค ์‹คํ–‰ํ•˜๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ณด๋‹ค๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค.

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ํŒŒ์ด์ฌ์ด ๋Œ€ํ‘œ์ ์ธ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด๊ณ , C,C++์€ ์ปดํŒŒ์ผ์–ธ์–ด, ์ž๋ฐ”๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์™€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ชจ๋‘ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.


JVM์œผ๋กœ ๋‹ค์‹œ ๋Œ์•„์™€์„œ ์•ž์„œ ๋ง์”€๋“œ๋ฆฐ ๊ฒƒ์ฒ˜๋Ÿผ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋Š” ๊ฐ ํ–‰๋งˆ๋‹ค ๋ณ€ํ™˜๋ฅผ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์†๋„ ์ธก๋ฉด์—์„œ ๋Š๋ฆฝ๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๋„์ž…ํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ JIT compiler(Just-In-Time Compiler, ์ดํ•˜ JIT ์ปดํŒŒ์ผ๋Ÿฌ) ์ž…๋‹ˆ๋‹ค. 

 

์ธํ„ฐํ”„๋ฆฌํ„ฐ๋Š” ๊ฐ ํ–‰๋งˆ๋‹ค ์ฝ์–ด ๋ณ€ํ™˜์„ ํ•˜๊ณ , JIT ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์ „์ฒด๋ฅผ ์ฝ์–ด ํ•œ๊บผ๋ฒˆ์— ๋ณ€ํ™˜์„ ํ•ฉ๋‹ˆ๋‹ค. ๋งค๋ฒˆ ์ฝ”๋“œ๋ฅผ ํ•œ ์ค„์”ฉ ์ฝ์–ด ๋ณ€ํ™˜์„ ํ•˜๊ฒŒ ๋˜๋ฉด, ์•„๋ฌด๋ž˜๋„ ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋Š๋ฆด์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๊ณ , ๋ฐ”์ดํŠธ ์ฝ”๋“œ ์ „์ฒด๋ฅผ ํ”„๋กœ๊ทธ๋žจ ์ˆ˜ํ–‰ ์ดˆ๊ธฐ์— ๋ชจ๋‘ ์ปดํŒŒ์ผ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์ดˆ๊ธฐ ์†๋„๊ฐ€ ๋„ˆ๋ฌด ๋Š๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์ฝ”๋“œ๋Š” ์ดˆ๊ธฐ์— ์ธํ„ฐํ”„๋ฆฌํ„ฐ์— ์˜ํ•ด ์‹œ์ž‘๋˜๊ณ , ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์ถฉ๋ถ„ํžˆ ๋งŽ์ด ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ JIT ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ์ปดํŒŒ์ผ์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ดˆ๊ธฐ์— ์ธํ„ฐํ”„๋ฆฌํŠธ ๋ฐฉ์‹์œผ๋กœ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ๋ณ€ํ™˜ํ•˜๋ฉด์„œ ๊ทธ ์ฝ”๋“œ๋ฅผ ์บ์‹ฑํ•˜์—ฌ, ๊ฐ™์€ ํ•จ์ˆ˜๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ถˆ๋ฆด ๋•Œ ๋งค๋ฒˆ ์ฝ”๋“œ๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ๋ฅผ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ ๋ผ๊ณ  ํ•˜๋Š”๋ฐ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋Š” ์บ์‹œ์— ๋ณด๊ด€๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๋ฒˆ ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ๋Š” ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JIT ์ปดํŒŒ์ผ๋Ÿฌ๋Š” JVM์˜ ํ•ต์‹ฌ์œผ๋กœ JVM ๋‚ด์—์„œ ์„ฑ๋Šฅ์— ๊ฐ€์žฅ ํฐ ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŠœ๋‹์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋Š” ์•„์ง ์ œ ์ˆ˜์ค€์„ ๋„˜์–ด์„œ๋Š” ๊ฒƒ ๊ฐ™์•„ ์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ์ง„ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค.

 

Garbage Collector ๋˜ํ•œ JVM์—์„œ ์ƒ๋‹นํžˆ ์ค‘์š”ํ•œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ๋‹ค๋ฅธ ๊ธ€์—์„œ ์ž์„ธํžˆ ๋‹ค๋ฃจ๊ณ  ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

Garbage Collector ๋ž€?

์œ ํšจํ•˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ, ์ฆ‰ ์ฃผ์†Œ๋ฅผ ์žƒ์–ด๋ฒ„๋ ค์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ Garbage ํ•˜๋Š”๋ฐ Garbage Collector๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•  ๋•Œ ์ด๋Ÿฐ Garbage ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ ์‹œ์ผœ ๋‹ค๋ฅธ์šฉ๋„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

Garbage Collector๋ฅผ ์ˆ˜ํ–‰ํ•  ๋• Garbage Collector๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์Šค๋ ˆ๋“œ๋“ค์ด ์ž‘์—…์„ ๋ฉˆ์ถ”๊ณ , ์ดํ›„ ์™„๋ฃŒ๋˜๋ฉด ์ž‘์—…์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

C, C++๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ง์ ‘ ํ•ด์ œํ•ด์ฃผ์–ด์•ผ ํ•˜์ง€๋งŒ ์ž๋ฐ” ๊ฐ™์€ ๊ฒฝ์šฐ Garbage Collector๋ฅผ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์ค๋‹ˆ๋‹ค.
์ฃผ์˜ํ• ์ ์€ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊นŒ์ง€ ์žก์•„์ฃผ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

*๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ : ํ”„๋กœ๊ทธ๋žจ ๊ตฌ๋™ ์ค‘์— ํ•„์š”์น˜ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ณ„์†ํ•ด์„œ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” ํ˜„์ƒ

 

 ๋งบ์œผ๋ฉฐ..

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ž‘๋™๊ณผ์ •์— ์ด์–ด ์ž๋ฐ”์—์„œ์˜ ์ž‘๋™๊ณผ์ • ๋˜ํ•œ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

 

  1. *.java๊ฐ€ ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด .class๋กœ ๋ณ€ํ™˜๋œ๋‹ค
  2. .class๊ฐ€ Class Loader๋กœ ์ธํ•ด JVM์— ๋กœ๋”ฉ๋œ๋‹ค
  3. JVM์˜ ์ธํ„ฐํ”„๋ฆฌํ„ฐ์™€ JIT ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ๋ณ€ํ™˜๋œ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋œ๋‹ค

๋Œ€๋žต ์ด๋ ‡๊ฒŒ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ๋ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

๋‹ค์Œ์—๋Š” JIT ์ปดํŒŒ์ผ๋Ÿฌ, ๊ฐ€๋น„์ง€ ์ฝœ๋ ‰ํ„ฐ ๋“ฑ JVM ๋‚ด์—์„œ ์ค‘์š”ํ•œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•ด์„œ ๋” ๊นŠ์ด์žˆ๊ฒŒ ๊ณต๋ถ€ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 Conference

 

๋ฐ˜์‘ํ˜•
profile on loading

Loading...