๊ตญ๋น์ง์ D+04
- JVM๊ณผ JAVA์ ๊ตฌ์ฑ์์ -
์ฐ๋ฆฌ๋ ๊ธฐ์กด์ CPU์ ๋ฉ๋ชจ๋ฆฌ์์ ๊ด๊ณ, ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ์ปดํ์ผ ๋ฐฉ์, ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑ์์์ ๋ํด ์ด๋ก ์ ์ผ๋ก ํ์ตํด๋ณด๋ ์๊ฐ์ ๊ฐ์ก์๋ค.
์ด์ ๋ถํฐ๋ JAVA๋ผ๋ ์ธ์ด๋ก ์์ ๋ด์ฉ์ ํด๋นํ๋ ๋ด์ฉ์ ์ค์ ๋ก ๊ตฌํํด๋ณด๋ฉด์ ํ์ตํด๋ณด๋๋ก ํ์.
JVM (JAVA Virtual Machine)
JVM์ ์๋ฐ ๊ฐ์๋จธ์ ์ผ๋ก ์ปดํ์ผ๋ ๋ฐ์ดํธ์ฝ๋๋ฅผ ๋จธ์ ์ ํตํด ์ด์์ฒด์ ์ ์๋ก ํต์ ํ๋ ์ญํ ์ ํ๋ค.
๊ทธ๋ฐ๋ฐ ์ฐ๋ฆฌ๋ JVM์ ๋จ์ ์ธ ๋๋ฆฐ์๋๋ฅผ ๊ฐ์ํ๊ณ ๊ตณ์ด JVM์ ๋ผ๊ณ ์ด์์ฒด์ ์ ํต์ ์ ์ ํด์ผํ ๊น?
์์ ๊ทธ๋ฆผ์ ๋ง์ฝ JVM์ด ์์ ๊ฒฝ์ฐ๋ฅผ ์ด๋ค ์ํฉ์ด ๋ฐ์๋ ์ง ์์๋ณผ ์ ์๋ ๊ทธ๋ฆผ์ด๋ค.
์ฌ๊ธฐ ๊ฐ๋ฐ์๊ฐ ์ธ์ฌ๋ง์ ์ฐ์ด์ฃผ๋ ์ฑ์ ๊ฐ๋ฐํ๊ธฐ ์ํด "Hello"๊ฐ ์ถ๋ ฅ๋๋ ์ฝ๋๋ฅผ ์์ฑํด ๋ณผ ๊ฒ์ด๋ค.
๊ทธ๋ฐ๋ฐ ์ฐ๋ฆฌ๋ ์ฌ๋ฌ ์ด์์ฒด์ ์ ํต์ ์ ํด์ผํ๊ธฐ ๋๋ฌธ์ ๊ฐ ์ด์์ฒด์ ์ ๋ง๋ ๋ช ๋ น์ด๋ฅผ ๋ฃ์ด์ค์ผํ๊ธฐ ๋๋ฌธ์ ํ๊ฐ์ง ๋ช ๋ น์ ํ๊ธฐ์ํด ์ด๋ง์ด๋งํ ์์ ์ฝ๋๋ฅผ ์์ฑํด์ผ๋ง ํ๋ ์ต์ ์ ์ํฉ์ ๋ง์ฃผํด์ผ๋ง ํ๋ค.
ํ์ง๋ง JVM์ด ์กด์ฌํ ๊ฒฝ์ฐ ๊ฐ๋ฐ์๋ Hello๋ฅผ ์ถ๋ ฅํ๋ ํ๋์ ์ฝ๋๋ฅผ JVM์๋ง ๋ฃ์ด์ฃผ์ด๋ JVM์ด ์์์ ์ด์์ฒด์ ์ ๋ง๊ฒ ๋ช ๋ น์ด๋ฅผ ๋ณด๋ด๋ ์ค๋ค.
๋๋ฆฐ์๋๋ผ๋ ๋จ์ ์ ๊ฐ์ง๊ณ ์์ง๋ง ๊ฐ๋ฐ์ ์ ์ฅ์์๋ ํธํ๊ณ ์ด์์ฑ์ ๊ณ ๋ คํ์ง ์์๋ ๋๊ธฐ ๋๋ฌธ์ JVM์ ๊ฐ๋ฐ์์๊ฒ ๋จ๋น๊ฐ์ ์กด์ฌ์ด๋ค.
์ด๋ฐ์์ผ๋ก ์ด์์ฑ์ด ํด๊ฒฐ๋์ง๋ง ๊ทธ์๋ฐ์ ์ฑ๋ฅ์ด ๋จ์ด์ง๋ ํ๋๊ฐ ์ข์ผ๋ฉด ํ๋๊ฐ ์ข์ง์์ ์ด๋ฐ๊ด๊ณ๋ฅผ trade-off๊ด๊ณ๋ผ๊ณ ํ๋ค.
JAVA์ ๊ตฌ์ฑ์์
์ดํด๋ฆฝ์ค ์ค์ต์ ํตํด ์ฐ๋ฆฌ๊ฐ ์ ์ ์์๋ ๊ฑด ํ๋์ ์ํฌ์คํ์ด์ค ์์ ํ๋ก์ ํธ๊ฐ ์์ผ๋ฉฐ ํ๋ก์ ํธ์์๋ ์ค์ง์ ์ธ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ๋ ์ฌ๋ฌ๊ฐ์ ํด๋์ค๋ค์ด ์กด์ฌํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ฉด ์ฐ๋ฆฌ๋ ์ค์ง์ ์ธ ํ๋ก๊ทธ๋จ ๊ตฌ์ฑ์์์ธ ํด๋์ค์ ๋ํด ๊น๊ฒ ์์๋ณผ ํ์๊ฐ ์๋ค.
ํด๋์ค๋ ํฌ๊ฒ ๋๊ฐ์ง๋ก ๊ตฌ์ฑ๋์ด ์๋๋ฐ ๋ฐ๋ก Data์ ํจ์์ธ Function์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
์ฐ๋ฆฌ๋ ํด๋์ค๋ฅผ ์ดํดํ๊ธฐ ์ํด์ ๊ฐ๊ฐ์ ๋ํ ์ ๋ณด๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ์์๋ณผ ํ์๊ฐ ์๋ค.
1) class์ ๊ตฌ์ฑ์์ - ํจ์(Function)
์ฐ๋ฆฌ๊ฐ ๊ธฐ์กด์ ์๊ณ ์๋ ํจ์์ ๋น๋์ด ์ค๋ช ํด ๋ณด์๋ฉด x๊ฐ์์ ๊ฐ์ ์ ๋ ฅํด์ ๊ณ์ฐํ๋ฉด y์ ๊ฐ์ ๊ตฌํ ์ ์๋ค.
ํจ์๋ ๊ตฌ์ฒดํ๋ ์ฐ์ฐ์ด๋ผ๋ ์๋ฏธ๋ก ํ๋ก๊ทธ๋๋ฐ์์์ ํจ์๋ x๋ผ๋ ์์ธ์ ํจ์์์ ์ ๋ ฅํ๊ฒ ๋๋ฉด y๋ผ๋ ๊ฒฐ๊ณผ๊ฐ์ด ๋์ค๋ ๋น์ทํ ์๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๋ค๋ง ํ๋ก๊ทธ๋๋ฐ์์์ ํจ์๋ ์์ ์ฌ์ง์ฒ๋ผ ํํํด ์ค๋ค.
๋ํ ์์ธ์ด๋ผ๋ ๊ฐ์ ์ฌ๋ฌ ๊ฐ๊ฐ ๋ค์ด๊ฐ ์ ์์ง๋ง, ๊ฒฐ๊ณผ๋ ๋ฐ๋์ ํ๋๊ฐ ๋์์ผ ํ๋ค.
์ด๋, ๋๋์๊ฐ ํ๋ก๊ทธ๋๋ฐ์ ์ผ๋ก ์ฉ์ด๋ฅผ ์ ๋ฆฌํด๋ณด๋ฉด ํจ์์์์ ์์ธ์ ํ๋ผ๋ฏธํฐ๋ผ๊ณ ํ๋ฉฐ ํจ์์์์ ๊ฒฐ๊ณผ๋ ๋ฆฌํด๋ฒจ๋ฅ๋ผ๊ณ ํ๋ค.
ํจ์์ ๋ํด ์ด๋์ ๋ ์ดํดํ๋ค๋ฉด ์ฐ๋ฆฌ๋ ํ๊ฐ์ง ์์์ผํ๋ ํจ์๊ฐ ์๋๋ฐ ๋ฐ๋ก mainํจ์์ด๋ค.
JVM์ ์์ฑ๋์ด์ง ์ฝ๋๋ฅผ ๋ณด๋ฉด์ ์ด๋ค ํจ์, ์ฆ ๋ฉ์๋๋ฅผ ๋จผ์ ์คํ์ํฌ์ง ์ฐพ์๋ณด๋๋ฐ ์ด๋ ์ฐ๋ฆฌ๋ JVM์ด๋ผ๋ ๊ฐ์๋จธ์ ๊ณผ ์ฝ์์ ํ๋๋ฐ ๋ฐ๋ก JVM์ main๋ฉ์๋๋ผ๊ณ ํ๋๊ณณ์ ๊ฐ์ฅ๋จผ์ ์คํ์ํจ๋ค๋ ๊ฒ์ด๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ํธ๋ฆฌํฌ์ธํธ์ธ ๋ฉ์ธ์ ๊ฐ์ฅ๋จผ์ ๋์๊ฐ๊ธธ ์ํ๋ ์ฝ๋๋ฅผ ์์ฑํด์ฃผ๋ฉด ๋๋ค.
2) class์ ๊ตฌ์ฑ์์ - Data
ํด๋์ค ์์๋ ๋ฉ์๋ ๋ฟ๋ง์๋๋ผ ๋ฐ์ดํฐ๋ ํฌํจ๋์ด ์๋๋ฐ ์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ๋ผ๋ ๊ฐ์ ๋ฃ์ด์ค๋ ๋ฐ๋์ ๋ฐ์ดํฐ ํ์ ์ ์ค์ ํด ์ฃผ์ด์ผ ํ๋ค.
• Data Type
๋ฐ์ดํฐ์์๋ ๋ฐ์ดํฐํ์ ์ ๋ฐ๋์ ํฌํจํ๋๋ฐ ๋ฐ์ดํฐํ์ ์ด ํ์ํ ์ด์ ๋ ์ปดํจํฐ๋ ์ ํ์ฑ์ด๋ผ๋ ํน์ง์ ๊ฐ์ง๊ณ ์๋๋ฐ ์ฆ, ์ปดํจํฐ ๋ฉ๋ชจ๋ฆฌ์ ํ๊ณ๊ฐ ์ ํด์ ธ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ ๋ ๋ฉ๋ชจ๋ฆฌ์์ ์ฐจ์งํ ๊ณต๊ฐ์ ์ค์ ํ๊ณ ๊ทธ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ด๋๋ก ํด์ผํ๋ค.
๋ํ ๋ฐ์ดํฐํ์ ์ ํน์ง์ค์ ๋๋ค๋ฅธ ํ๋๋ ๊ท์น์ด๋ผ๊ณ ํ๋ bit rule์ด๋ผ๋๊ฒ ์๋๋ฐ ๋ฐ์ดํฐ๋ฅผ ๋ฌด์จํ์ผ๋ก ๋ฃ์ด์ค์ผํ ์ง ์ค์ ํด์ฃผ๋ฉด ๋ฐ์ดํฐ๊ฐ ์ฐจ์งํ๋ ์ฉ๋์ ์ด๋คํ์ด ๋ค์ด๊ฐ๋๋์ ๋ฐ๋ผ ๋นํธ๊ฐ ๊ตฌ์ฑํ๋ ๋น์จ์ด ๊ฐ๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ๋ฐ์ดํฐํ์ ์ ๋ฐ๋์ ์ ์ค์ ํด ์ฃผ์ด์ผ ํ๋ค.
• Data Type - ์ ์ํ
๊ฐ์ฅ ๋ณดํธ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉ๋๋ ๊ฒ์ intํ์ธ๋ฐ ์ด์ ๋ 2๊ฐ์ง์ด๋ค.
์ฒซ๋ฒ์งธ ์ด์ ๋ ์ฐ๋ฆฌ ์ปดํจํฐ์ ๋ฉ๋ชจ๋ฆฌํฌ๊ธฐ๋ 16G ์ ๋ ๋๋๋ฐ 16๊ธฐ๊ฐ๋ฅผ ๋ฐ์ดํธ๋ก ํํํ๋ฉด ์ฝ 171์ต ๋ฐ์ดํธ์ด๊ธฐ๋๋ฌธ์ ๋ด๊ฐ ๋ฉ๋ชจ๋ฆฌ๊ณต๊ฐ์ ์ ์ฝํ๋ค๊ณ short์ byte๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ 171์ตํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ์๊ฒ๋ ๋ณ์ฐจ์ด๊ฐ ์๊ธฐ๋๋ฌธ์ ๋๋ฌด ์์ ํ์ ์ ์ ์ฌ์ฉํ์ง ์๋๋ค๋ ๊ฒ์ด๋ค.
๋๋ฒ์งธ ์ด์ ๋ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๋ฐ์ดํฐ๋ฅผ 64๋นํธ์ง๋ฆฌ ๋ฒ์ค๋ก cpu์ ์ ์กํ๋ค๊ณ ํ๋ค๊ณ ๊ฐ์ ํ์.
๋ฒ์ค๋ 32๋นํธ๋ก ๋๋ ์ ๊ด๋ฆฌํ๊ฒ ๋๋๋ฐ ์ด๊ฒ์ ์ฐ๋ฆฌ๋ ์ฑ๋์ด๋ผ๊ณ ํ๋ค.
2๊ฐ์ ์ฑ๋์ ๊ฐ ๋ฐ์ดํฐ intํ๊ณผ shortํ์ ๋ฃ์์๋ intํ์ ๋ฑ ๋ค์ด๋ง๋ ๊ฒ์ด ๋ณด์ด์ง๋ง shortํ์ ๊ฒฝ์ฐ ๊ณต๊ฐ์ด ๋จ์์๋ค๊ณ ํด์ ๋น์๋๊ฑฐ๋ ๋ค๋ฅธ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ์ ์ผ๋ก ๋ค์ด๊ฐ๋ ๊ฒ์ด ์๋๋ผ padding data๋ผ๋ ์๋ฏธ์๋ ๊ฐ์ ์ธ์์ ์ผ๋ก ๋ฃ์ด๋ฒ๋ฆฐ๋ค.
๊ทธ๋ ๊ฒ ๋๋ฉด intํ์ shortํ๋ณด๋ค ํฌ๊ธฐ๊ฐ ํผ์๋ ์ด๋ ํ ๊ณผ์ ์์ด ๋ฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์์ง๋ง, short์ ๋ฉ๋ชจ๋ฆฌ์ ๊ณต๊ฐ์ ์ ์ฝํ ์๋ ์์ง๋ง ์ฑ๋์ ๋น์์ง ๊ณต๊ฐ์ padding data๋ฅผ ๋ฃ๋ ์๊ฐ์ด ํ๋ฌ์ค๋์ด ์คํ๋ ค int๋ณด๋ค ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ๋ณดํต intํ์ ๋ง์ด ์ ํธํ๋ ๊ฒ์ด๋ค.
• Data Type - ์ค์ํ
์ปดํจํฐ๋ ๋ช ํํ ์ค์๋ฅผ ์ ์ฅํ ์๋ ์์ง๋ง ์ค์๋ฅผ ๊ทธ์์ฒด๋ก ์ ์ฅํ๋ ๊ฒ์ด ์๋๋ผ ๊ฐ์ฅ ์ ๋นํ ๊ทผ์ฌ์น๋ก ์ ์ฅํ๊ฒ ๋๋๋ฐ ์ด๋ฅผ ์ฐ๋ฆฌ๋ ํด์๋๋ผ๊ณ ํ๋ค.
์ค์ํ์์ ์ฐ๋ฆฌ๊ฐ ๋ณดํธ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒ์ doubleํ์ธ๋ฐ ์๋ํ๋ฉด doubleํ์ด ํฌ๊ธฐ๊ฐ ์ข ๋ ํฌ๊ธฐ ๋๋ฌธ์ floatํ๋ณด๋ค ํด์๋๊ฐ ๋๋ค๋ ์๋ฏธ๋ก ํด์๋์ด ํด์๋๊ฐ ๋ ๋์ doubleํ์ ์ฌ์ฉํ๋ค๊ณ ํ๋ค.
ํ์ง๋ง ์ค์ํ๊ฐ์ ๊ฒฝ์ฐ๋ ๋ณดํธ์ ์ผ๋ก ์ฌ์ฉ๋๋ค๊ณ ํด์ doubleํ์ ๋ฌด์กฐ๊ฑด ์ฌ์ฉํ๋ค๊ธฐ๋ณด๋ค๋ ๊ฐ ํ์ ์ด ๊ฐ์ง๊ณ ์๋ bit rule์ด ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ํ๋๋ก ํต์ผํด์ ์ฌ์ฉํด ์ฃผ๋๊ฒ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ด๋ค.
• Data Type - ๋ ผ๋ฆฌํ
๋ ผ๋ฆฌํ์ ์์ด ์ง๋ฆฌ๊ฐโฆ์ง๋ฆฌ๊ฐ = ์ง๋ฆฌ๊ฐ ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ ์ด๋์ ์ง๋ฆฌ๊ฐ์ True๋ False๋ฅผ ์๋ฏธํ๊ณ โฆ๋ ๋ ผ๋ฆฌ์ฐ์ฐ์๋ก์จ AND์ฐ์ฐ์ ๋๋ OR์ฐ์ฐ์์ด๋ค.
๋ ผ๋ฆฌ์ฐ์ฐ์์์ AND๋ ๋ ผ๋ฆฌ๊ณฑ์ผ๋ก ๋ชจ๋ ๊ฐ์ด True์ฌ์ผ True๋ผ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ค๊ณ , OR๊ฐ์ ๊ฒฝ์ฐ๋ ๋ ผ๋ฆฌํฉ์ ํ๊ฐ์ ๊ฐ์ด๋ผ๋ True์ด๋ฉด True๊ฐ์ ๊ฐ์ ธ์ค๋ ํน์ง์ด ์๋ค.
• Data Type - ๋ฌธ์ํ
๋ฌธ์ํ์๋ char์ String์ด ์๋๋ฐ ์ด๋ String์ ๊ธฐ๋ณธํ์ ์ด ์๋๋ค.
ํ์ง๋ง ๋ฌธ์์ด์ ์ ๋ ฅํ ๋ ์ฌ์ฉํ๋ ๊ฒ์ด๊ธฐ๋๋ฌธ์ ํ์ ๋ฃ์ด๋จ์ ๋ฟ ์ฐธ๊ณ ๋ง ํ๋๋ก ํ๋ค.
char์ ๋ฌธ์๋ฅผ ํด์ํ ๋ 2bit์ค์์ ์ฒซ๋ฒ์งธ์ ๊ฐ์ด 0์ผ๋ก๋ง ์ด๋ฃจ์ด์ก์ ๊ฒฝ์ฐ์ ๋๋ฒ์งธ ์นธ์ ์์คํค์ฝ๋๋ก ํด์ํด์ผํ๋ฉฐ, ์๋ถ๋ถ์ ๊ฐ์ด 0์ผ๋ก๋ง ์ด๋ฃจ์ด์ ธ์์ง ์์์ ๊ฒฝ์ฐ์ 2๋ฒ์งธ์นธ์ ์ ๋์ฝ๋๋ก ํด์ํด์ผํ๋ค.
ํ์ ๋ณํ
๋ฐ์ดํฐ์ ํ์ ์ ๋ณํํ๋๋ฐ์๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ด ์๊ฒ ์ง๋ง ๊ฐ์ฅ ์ค์ํ๊ฒ์ ์์น์ ์งํค๋ ๊ฒ์ธ๋ฐ ํ์ ๋ณํ์ ์์น 2๊ฐ์ง์ค ํ๋๋ ์์์ด ์์ด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
์๋ฅผ ๋ค์ด ๋ ผ๋ฆฌํ booleanํ์ ์ ์ํ int๋ก ๋ณํํ ์ ์์๊น? ์ด๋ฐ ๋ต์ ํ๊ธฐ ์ ๋งคํ ๊ฒ๋ค์ ์ ์ด์ ํ๋ณํ์ ํ์ง ์๊ณ ์ฐจ๋ผ๋ฆฌ ์๋ก์ด ์ฝ๋๋ฅผ ๋ค์์ง๋๊ฒ ๋ซ๋ค.
๋๋ฒ์งธ๋ ๊ธฐ์์ด๋ฉด ๊ฐ์ ํ์์ ๊ฐ์ง ๊ฒ๋ค๋ผ๋ฆฌ ๋ณํํ๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ์ด๊ฒ๋ค๋ ์ ์ฌ์ ์ธ ์ค๋ฅ๋ฅผ ๊ฐ์ง๊ณ ์์ ํ๋ฅ ์ด ์๊ธฐ๋๋ฌธ์ ๊ฐ๊ธ์ ์ผ๋ก ํ๋ณํ์ ํผํ๋๊ฒ ์ข๋ค.
'์๋ > ๊ตญ๋น์ง์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[D+06] ๋ณต์ต ๋ฐ ๋ฐ๋ณต๋ฌธ (0) | 2022.09.26 |
---|---|
[D+05] ์ฐ์ฐ, ์กฐ๊ฑด๋ฌธ (0) | 2022.09.23 |
[D+03] ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ด (์ปดํ์ผ vs ์ธํฐํ๋ฆฟ) (0) | 2022.09.22 |
[D+03] Flow Chart ๋ฐ ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ถ (0) | 2022.09.21 |
[D+02] ์ด์ง์์คํ (Binary System) & Flow Chart (0) | 2022.09.20 |
๋๊ธ