Amenable
Amenable's Blog
Amenable
  • λΆ„λ₯˜ 전체보기 (189)
    • πŸ“‚ JAVA (87)
      • μ΄νŽ™ν‹°λΈŒ μžλ°” (65)
      • μ£Όμš” κ°œλ… (22)
    • πŸ“‚ 개발 μ„œμ  (22)
      • μ‹€μš©μ£Όμ˜ ν”„λ‘œκ·Έλž˜λ¨Έ (1)
      • 객체지ν–₯의 사싀과 μ˜€ν•΄ (2)
      • 클린 μ½”λ“œ (8)
      • ν•¨κ»˜ 자라기 (1)
      • 그림으둜 λ°°μš°λŠ” HTTP&Network Basic (10)
    • πŸ“‚ λ°μ΄ν„°λ² μ΄μŠ€ (8)
      • κ°œλ… (8)
      • λ¬Έμ œν’€μ΄ (0)
    • πŸ“‚ λ„€νŠΈμ›Œν¬ (14)
      • κ°œλ… (6)
      • 성곡과 μ‹€νŒ¨λ₯Ό κ²°μ •ν•˜λŠ” 1%의 λ„€νŠΈμ›Œν¬ 원리 (8)
    • πŸ“‚ μŠ€ν”„λ§ (13)
      • κΈ°λ³Έ κ°œλ… (13)
    • πŸ“‚ WEB (5)
    • πŸ“‚ 자료ꡬ쑰 (12)
      • κ°œλ… (2)
      • μ •λ ¬ (8)
      • 트리 (2)
    • πŸ“‚ μ•Œκ³ λ¦¬μ¦˜ (10)
      • μ΅œμ†Œμ‹ μž₯트리 (2)
      • μ΅œλ‹¨ 경둜 (2)
      • λ¬Έμžμ—΄ (2)
      • ETC (4)
    • πŸ“‚ μ•Œκ³ λ¦¬μ¦˜_λ¬Έμ œν’€μ΄ (4)
      • BOJ_λ°±μ€€ (4)
    • πŸ“‚ ν”„λ‘œκ·Έλž˜λ° (3)
    • πŸ“‚ DevOps (2)
      • 배포 (2)
    • πŸ“‚ ν›„κΈ° (8)
      • μš°μ•„ν•œ ν…Œν¬μ½”μŠ€(ν”„λ¦¬μ½”μŠ€) (4)
      • 2023λ…„ (3)
      • 2024λ…„ (1)
    • πŸ“‚ 회고 (1)
      • 2023λ…„ (1)

λΈ”λ‘œκ·Έ 메뉴

  • πŸš€ GitHub

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
Amenable
πŸ“‚ JAVA/μ£Όμš” κ°œλ…

JVM λ©”λͺ¨λ¦¬ ꡬ쑰

JVM λ©”λͺ¨λ¦¬ ꡬ쑰
πŸ“‚ JAVA/μ£Όμš” κ°œλ…

JVM λ©”λͺ¨λ¦¬ ꡬ쑰

2023. 3. 24. 12:07

1. JVM κ°œλ… πŸ‘¨β€πŸ”§

  JVM(Java Virtual Machine)μ΄λž€ 'μžλ°”λ₯Ό μ‹€ν–‰ν•˜κΈ° μœ„ν•œ κ°€μƒμ˜ 컴퓨터'라고 ν•  수 μžˆλ‹€. μ—¬κΈ°μ„œ λ§ν•˜λŠ” κ°€μƒμ˜ μ»΄ν“¨ν„°λž€ μ‹€μ œ 컴퓨터(ν•˜λ“œμ›¨μ–΄)κ°€ μ•„λ‹Œ μ†Œν”„νŠΈμ›¨μ–΄λ‘œ κ΅¬ν˜„λœ 컴퓨터 μ†μ˜ 컴퓨터이닀.

  μžλ°”λ‘œ μž‘μ„±λœ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ λͺ¨λ‘ JVMμ—μ„œλ§Œ μ‹€ν–‰λ˜κΈ° λ•Œλ¬Έμ— μžλ°” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•˜κΈ° μœ„ν•΄μ„œλŠ” JVM이 λ°˜λ“œμ‹œ ν•„μš”ν•˜λ‹€.

  JVM은 OS에 쒅속적이기 λ•Œλ¬Έμ— ν•΄λ‹Ή OSμ—μ„œ μ‹€ν–‰ κ°€λŠ₯ν•œ JVM이 ν•„μš”ν•˜λ‹€. μ΄λŸ¬ν•œ νŠΉμ„±μœΌλ‘œ μΈν•΄ μžλ°”μ˜ μž₯점 μ€‘ ν•˜λ‚˜λ‘œ 'Write Once, Run AnyWhere.(ν•œ λ²ˆ μž‘μ„±ν•˜λ©΄ μ–΄λ””μ„œλ“  μ‹€ν–‰λœλ‹€.)'λΌλŠ” κ²ƒμ΄ μžˆλ‹€.

 

2. 3κ°€μ§€ μ£Όμš” μ˜μ—­ πŸ‘©β€πŸ”¬

  JVM은 λ©”λͺ¨λ¦¬λ₯Ό μš©λ„μ— 따라 μ—¬λŸ¬ μ˜μ—­μœΌλ‘œ λ‚˜λˆ„μ–΄ κ΄€λ¦¬ν•œλ‹€. κ·Έ 쀑 3κ°€μ§€ μ£Όμš” μ˜μ—­μΈ λ©”μ„œλ“œ μ˜μ—­(Method Area), μŠ€νƒ μ˜μ—­(Call Stack), νž™ μ˜μ—­(Heap)에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μž. (μ•„λž˜ κ·Έλ¦Όμ—μ„œ cvλŠ” 클래슀 λ³€μˆ˜, lvλŠ” μ§€μ—­λ³€μˆ˜, ivλŠ” μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό μ˜λ―Έν•œλ‹€.)

1. λ©”μ„œλ“œ μ˜μ—­ (Method Area)

  • ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ μ€‘ μ–΄λ–€ ν΄λž˜μŠ€κ°€ μ‚¬μš©λ˜λ©΄ λ©”μ„œλ“œ μ˜μ—­μ— ν΄λž˜μŠ€μ— λŒ€ν•œ μ •보λ₯Ό μ €μž₯
  • μ΄λ•Œ, κ·Έ ν΄λž˜μŠ€μ˜ ν΄λž˜μŠ€ λ³€μˆ˜(class variable)도 μ΄ μ˜μ—­μ— ν•¨κ»˜ μ €μž₯

2. μŠ€νƒ μ˜μ—­ (Call Stack)

  • λ©”μ„œλ“œλ“€μ˜ μ‹€ν–‰ κ³΅κ°„
  • λ©”μ„œλ“œκ°€ μž‘업을 μˆ˜ν–‰ν•˜λŠ” λ™μ•ˆ μ§€μ—­λ³€μˆ˜(λ§€κ°œλ³€μˆ˜ ν¬ν•¨)λ“€κ³Ό μ—°μ‚°μ˜ μ€‘κ°„κ²°κ³Ό λ“±μ„ μ €μž₯
  • λ©”μ„œλ“œ ν˜ΈμΆœ μˆœμ„œλŒ€λ‘œ μŒ“μ΄λŠ” κ΅¬μ‘°

3. νž™ μ˜μ—­ (Heap)

  • μΈμŠ€ν„΄μŠ€κ°€ μƒμ„±λ˜λŠ” κ³΅κ°„
  • ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ μ€‘ μƒμ„±λ˜λŠ” μΈμŠ€ν„΄μŠ€λŠ” λͺ¨λ‘ μ΄κ³³μ— μƒμ„±

 

3. μ˜ˆμ‹œ πŸ‘¨β€πŸŽ¨

  2개의 μ˜ˆμ‹œλ₯Ό μ‚΄νŽ΄λ³΄μž. μ²« λ²ˆμ§Έ μ˜ˆμ‹œλ₯Ό ν†΅ν•΄ 'ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ μ€‘ μŠ€νƒ μ˜μ—­(Call Stack)의 λ³€ν™”'λ₯Ό μ•Œμ•„보고, λ‘ λ²ˆμ§Έ μ˜ˆμ‹œλ₯Ό ν†΅ν•΄ '객체의 μƒμ„±κ³Ό λ©”λͺ¨λ¦¬ν• λ‹Ή'을 μ•Œμ•„λ³΄μž. μ½”λ“œμ™€ 그림을 톡해 μ‰½κ²Œ 이해할 수 있기 λ•Œλ¬Έμ— μžμ„Έν•œ μ„€λͺ…은 μƒλž΅ν•œλ‹€.

1. μŠ€νƒ μ˜μ—­μ˜ λ³€ν™”

class CallStackTest {
	public static void main(String[] args) {
		firstMethod();
	}

	static void firstMethod() {
		secondMethod();
	}

	static void secondMethod() {
		System.out.println("This is the secondMethod");
	}
}

2. 객체의 생성과 λ©”λͺ¨λ¦¬ ν• λ‹Ή

public class Animal {
	String name;
	int age;
	boolean isMammalia;
	
	public Animal(String name, int age, boolean isMammalia) {
		super();
		this.name = name;
		this.age = age;
		this.isMammalia = isMammalia;
	}
}
public class JvmMemoryTest {
	public static void main(String[] args) {
		Animal animalA = new Animal("amenable", 24, true);
		Animal animalB = new Animal("sunny", 21, false);
	}
}

 

ν•΄λ‹Ή 글은 남ꢁ성 λ‹˜μ˜ μžλ°”μ˜ 정석을 μ°Έκ³ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

 

'πŸ“‚ JAVA > μ£Όμš” κ°œλ…' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

clone()  (0) 2023.04.07
얕은 볡사(Shallow Copy) vs κΉŠμ€ 볡사(Deep Copy)  (0) 2023.04.07
λ³€μˆ˜  (0) 2023.03.21
곡변 λ°˜ν™˜νƒ€μž… (Convariant Return Type)  (0) 2023.03.09
마컀 μΈν„°νŽ˜μ΄μŠ€ (Marker Interface)  (0) 2023.03.09
  • 1. JVM κ°œλ… πŸ‘¨β€πŸ”§
  • 2. 3κ°€μ§€ μ£Όμš” μ˜μ—­ πŸ‘©β€πŸ”¬
  • 3. μ˜ˆμ‹œ πŸ‘¨β€πŸŽ¨
'πŸ“‚ JAVA/μ£Όμš” κ°œλ…' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • clone()
  • 얕은 볡사(Shallow Copy) vs κΉŠμ€ 볡사(Deep Copy)
  • λ³€μˆ˜
  • 곡변 λ°˜ν™˜νƒ€μž… (Convariant Return Type)
Amenable
Amenable
CS, μžλ°”, 자료ꡬ쑰, μ•Œκ³ λ¦¬μ¦˜, μŠ€ν”„λ§, μŠ€ν”„λ§ λΆ€νŠΈμ— ν•΄λ‹Ήν•˜λŠ” κ°œλ°œμ— κ΄€ν•œ λ‚΄μš©μ„ κ³΅μœ ν•©λ‹ˆλ‹€.

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”

단좕킀

λ‚΄ λΈ”λ‘œκ·Έ

λ‚΄ λΈ”λ‘œκ·Έ - κ΄€λ¦¬μž ν™ˆ μ „ν™˜
Q
Q
μƒˆ κΈ€ μ“°κΈ°
W
W

λΈ”λ‘œκ·Έ κ²Œμ‹œκΈ€

κΈ€ μˆ˜μ • (κΆŒν•œ μžˆλŠ” 경우)
E
E
λŒ“κΈ€ μ˜μ—­μœΌλ‘œ 이동
C
C

λͺ¨λ“  μ˜μ—­

이 νŽ˜μ΄μ§€μ˜ URL 볡사
S
S
맨 μœ„λ‘œ 이동
T
T
ν‹°μŠ€ν† λ¦¬ ν™ˆ 이동
H
H
단좕킀 μ•ˆλ‚΄
Shift + /
⇧ + /

* λ‹¨μΆ•ν‚€λŠ” ν•œκΈ€/영문 λŒ€μ†Œλ¬Έμžλ‘œ 이용 κ°€λŠ₯ν•˜λ©°, ν‹°μŠ€ν† λ¦¬ κΈ°λ³Έ λ„λ©”μΈμ—μ„œλ§Œ λ™μž‘ν•©λ‹ˆλ‹€.