자바와 메모리

TIL·2022년 12월 9일
0

Java (최은빈)

목록 보기
7/27

  • 메모리 입장에서는 static 보다는 로컬 변수가 좋지만 JVM이 할일이 많아짐 (변수를 램에 로드, 해제)
  • 컴 = cpu ram + ssd + 하드
    • ssd, 하드에 실행 안하는 프로그램 코드로 저장 (비휘발)
    • 하드에서 코드 가져와서 프로그램 ram 에서 코드 실행 (실행 중인 프로그램 = 프로세스 - 스트리밍, 클라우드)
  • stack, heap, data, code 는 물리적으로는 하나의 공간. 바이트로 나눠서 침범하면 오버플로우

stack

  • int, double, float (원시타입의 일반변수)
  • stack overflow → 컴파일 될때 데이터 사이즈 4byte로 크기 정해짐
    int a = 1233820498209482938049820830492; → 너무 커서 컴파일 에러
  • 함수 호출시 생성되는 지역변수, 매개변수 → 함수 호출 완료되면 메모리 해제

heap

  • 참조(reference) 변수
    • 객체타입의 변수 (String → 바이트 정해져있지 않음)
    • 부족하면 heap overflow
    • 지역변수이긴 한데, 맨 앞글자가 대문자
  • 논리적으로 분리되어 있지만, 물리적으로 같은 공간 공유
  • 프로그래머가 할당/해제 하는 메모리 공간
    • 자바에서는 직접 해제하지 않고 GC가 사용하지 않는 메모리를 해제함
  • 이 공간에 메모리 할당하는 것을 동적할당이라고 함 → 실행도중 (런타임) 에 크기 알 수 있음 (JVM이 생성, 소멸)

data

  • 전역 변수, 정적 변수 (static)
  • 프로그램 시작과 동시에 할당되고, 프로그램 종료되어야 메모리 소멸되는 영역

code

실행할 프로그램에서 우리가 작성한 소스코드, 텍스트

0개의 댓글

관련 채용 정보