[TIL] 2024-07-15

성장일기·2024년 7월 15일

회고

목록 보기
4/37

중요 학습 내용 [JAVA]

객체의 메모리 할당

  • JVM이 정적파일을 build하여 runtime 시점에 process상에서 운영체제로부터 메모리 영역을 할당받음.
  • 할당받은 메모리 영역(Runtime Data Area)은 크게 stack, heap, method 영역으로 나뉜다.
  • stack 영역에서는 선언된 객체의 변수가 주소값을 가지며 할당된다.
  • heap 영역에서는 stack영역에서 할당된 주소값이 가리키는 실제 데이터가 할당된다. 이는 기본값을 가진다.
    - 만일 2차원 배열이나 객체를 필드로 갖는 객체를 경우, heap영역에서는 각각 2차원에 해당하는 배열, 참조되는 객체를 참조하는 주소값을 heap영역에서 가지며, 참조되는 데이터는 heap 영역의 또 다른 영역에 할당된다.
  • 만일 참조하는 변수가 null값으로 치환되면 해당 변수는 기존 가리키는 주소를 잃어 JVM은 runtime 시점에 NullPointException을 반환한다.
  • 또한 기존에 참조되던 heap영역의 메모리는 더이상 사용되지 않으며, 추후 다른 값을 얻을 시, 기존의 heap 영역이 아닌 다른 heap 영역을 사용하며, 해당 변수의 JVM의 GC에 의해 자동으로 버려진다.

놓쳤던 점

  • java 동작 방식에 이해 보다는 눈 앞에 놓인 문제만 생각함.
    - 기본적인 원리를 파악하는 것이 중요(이후 응용을 위함)
  • 한 번 이해가 시간이 걸릴 뿐 이해하면 머릿속의 보조기억장치에 저장됨

개선의 여지

  • 나만의 Speciality가 필요
    • 여러 성능 분석을 위한 공부 추가 공부 필요
  • 타성에 젖지 않도록 유의
  • 문제에 직면하면 당황하곤 함.
    • 시간이 해결해줄 것.
    • 문제 직면시 빠르게 해결하는 것보다는 시간을 가지고 차분히 생각할 것.
profile
엔지니어로의 성장일지

0개의 댓글