TIL (Today I Learned)/Java

[Java] Static ๋ณ€์ˆ˜

loki d 2021. 12. 18. 17:15
728x90

[Java] Static ๋ณ€์ˆ˜

  • java์—์„œ static์œผ๋กœ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๋ฅผ ๋งŽ์ด ์„ ์–ธํ•ด ์™”๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ์˜ ์ด์ ์„ ์ •ํ™•ํžˆ ์•Œ๊ธฐ ์œ„ํ•ด ์ •๋ฆฌํ•ด ๋ณด์ž

Static

  • Java์—์„œ Static์ด๋ž€ ํ‚ค์›Œ๋“œ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ํ•œ๋ฒˆ ํ• ๋‹น๋˜์–ด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋  ๋•Œ ํ•ด์ œ๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ
  • ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ์— Load
  • ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ณ€์ˆ˜๋“ค์„ ์ง€์ •ํ•  ๋ฉ”๋ชจ๋ฆฌ๋„ ํ•„์š”

๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ ๊ณต๊ฐ„ ๊ตฌ์กฐ

์Šคํฌ๋ฆฐ์ƒท 2021-10-31 ์˜คํ›„ 1 36 39

1. Code ์˜์—ญ

  • ์‹คํ–‰ํ•  ํ”„๋กœ๊ทธ๋žจ์˜ ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ์œผ๋กœ CPU๋Š” Code์˜์—ญ์— ์ €์žฅ๋œ ๋ช…๋ น์–ด๋ฅผ ํ•˜๋‚˜์”ฉ ๊ฐ€์ ธ๊ฐ€ ์ฒ˜๋ฆฌ

2. Data ์˜์—ญ

  • ํ”„๋กœ๊ทธ๋žจ์˜ ์ „์—ญ๋ณ€์ˆ˜์™€ static๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ
  • ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ์ž‘๊ณผ ํ•จ๊ป˜ ํ• ๋‹น๋˜๋ฉฐ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๋ฉด ์†Œ๋ฉธ

    3. Stack ์˜์—ญ

  • ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ๊ณผ ๊ด€๊ณ„๋˜๋Š” ์ง€์—ญ๋ณ€์ˆ˜์™€ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ
  • ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ๊ณผ ํ•จ๊ป˜ ํ• ๋‹น๋˜๋ฉฐ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์ด ์™„๋ฃŒ๋˜๋ฉด ์†Œ๋ฉธ
  • Stack ์˜์—ญ์€ LIFO(Last In First Out) ๊ตฌ์กฐ๋กœ ๋†’์€ ์ฃผ์†Œ์—์„œ ๋‚ฎ์€ ์ฃผ์†Œ์˜ ๋ฐฉํ–ฅ์œผ๋กœ ํ• ๋‹น

    4. Heap ์˜์—ญ

  • ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ
  • ์‚ฌ์šฉ์ž์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋™์ ์œผ๋กœ ํ• ๋‹น๋˜๊ณ  ํ•ด์ œ
  • Stack๊ณ  ๋ฐ˜๋Œ€๋กœ Heap์€ ๋‚ฎ์€ ์ฃผ์†Œ์—์„œ ๋†’์€ ์ฃผ์†Œ์˜ ๋ฐฉํ–ฅ์œผ๋กœ ํ• ๋‹น

์ผ๋ฐ˜์ ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜์—ฌ ๋งŒ๋“œ๋Š” Class๋Š” Static์˜์—ญ์— ์ƒ์„ฑ๋˜๊ณ  new ์—ฐ์‚ฐ์„ ํ†ตํ•ด ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋Š” Heap ์˜์—ญ์— ์ƒ์„ฑ๋œ๋‹ค.

  • Static ๋ณ€์ˆ˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์ƒ์—์„œ Data์˜์—ญ์— ์ €์žฅ๋˜๋ฉฐ ์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ์ƒ์— ํ•œ๋ฒˆ ํ• ๋‹น๋˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋  ๋•Œ ํ•ด์ œ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธ
  • Class๊ฐ€ ์—ฌ๋Ÿฌ๋ฒˆ ์ƒ์„ฑ๋˜์–ด๋„ ํด๋ž˜์Šค ๋‚ด๋ถ€ Static ๋ณ€์ˆ˜๋Š” ๋”ฑ ํ•œ๋ฒˆ๋งŒ ์ƒ์„ฑ
  • ๊ฐ์ฒด ์ƒ์„ฑ์‹œ ํ• ๋‹น๋œ Heap ์˜์—ญ์˜ ๋ฉ”๋ชจ๋ฆฌ๋Š” Garbage Collector๋ฅผ ํ†ตํ•ด ์ˆ˜์‹œ๋กœ ๊ด€๋ฆฌ๋ฅผ ๋ฐ›๋Š”๋‹ค.
  • Static ์˜์—ญ์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ๊ณต์œ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ผ๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ GC์˜ ๊ด€๋ฆฌ ์˜์—ญ ๋ฐ–์— ์กด์žฌํ•˜๋ฏ€๋กœ Static์„ ๋‚จ๋ฐœํ•˜๋ฉด ์‹œ์Šคํ…œ์˜ ํผํฌ๋จผ์Šค์— ์•…์˜ํ–ฅ์„ ๋ผ์นœ๋‹ค.
  • Static๋ณ€์ˆ˜์™€ Global๋ณ€์ˆ˜๋Š” ํ˜ผ์šฉํ•ด์„œ ์“ฐ์ธ๋‹ค.
    • ๊ณตํ†ต์ 
      • Data ์˜์—ญ์— ์ €์žฅ๋˜๊ณ  ๋ผ์ดํ”„ํƒ€์ž„์ด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋ ๋•Œ๊นŒ์ง€์ด๋‹ค.
    • ์ฐจ์ด์ 
      • Global : ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ๋„ ํ•ด๋‹น ๋ณ€์ˆ˜์— ์ ‘๊ทผ ๊ฐ€๋Šฅ
      • Static : ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ๋Š” ์ ‘๊ทผ ๋ถˆ๊ฐ€, ํ•ด๋‹น ํŒŒ์ผ๋‚ด์—์„œ scope์— ๋งž๊ฒŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ

        ์ฐธ์กฐ

        JAVA Static๋ณ€์ˆ˜์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ