hyeonga_code

Java_07_자바 메모리, Stack_스텍, Heap_힙, CPU, Constant Pool_상수, String Constant Pool, UML_Unified Modeling Language 본문

Java

Java_07_자바 메모리, Stack_스텍, Heap_힙, CPU, Constant Pool_상수, String Constant Pool, UML_Unified Modeling Language

hyeonga 2023. 9. 10. 05:59
반응형

- Java Memory
    - Stack
        - 기본형 데이터가 저장됩니다.
        - 메모리 용량에 영향을 받습니다.
        - 중괄호를 통해 영향을 끼치는 범위를 지정합니다.
        - 변수에 저장된 실제 값이 저장됩니다.
    - Heap
        - 참조형 데이터가 저장됩니다.
        - 메모리 용량에 영향을 받지 않습니다.
        - Stack은 변수의 값이 저장된 Heap의 주소 값을 가집니다.
            - 변수에 저장된 실제 값은 Heap에 저장되어 있습니다.
            - 실제값이 저장된 Heap의 주소값이 Stack에 저장되어 있습니다.
    - CPU는 Stack에 들어있는 값을 기준으로 작동합니다.
        - 그러나 Stack 공간은 크기가 보다 작습니다.
        - 최근 자주 사용되는 값들을 Stack에 저장할 수 없습니다.
        - Heap 공간으로 제한이 없는 크기로 어떠한 수도 저장할 수 있습니다.
        - Stack 공간에 값이 저장된 Heap 공간의 주소값을 저장하여 불러내어 사용할 수 있도록 합니다.
    - Method = Static
        - 프로그램이 종료될 때까지 메모리에 남아있습니다.
        - file data_필드 데이터 : 멤버 변수 이름, 타입, 접근 제어자 등의 메타 정보
        - method data_메소드 데이터 : 메소드 이름, 리턴 타입, 매개 변수, 접근 제어자의 메타 정보
        - constructor_생성자 : 생성자 메소드에 관한 정보
        - Static 변수_Class 변수 : 모든 객체가 공유할 수 있는 정적 클래스 변수
        - constructor_생성자 : 생성자 메소드에 관한 정보

    - Constant Pool_상수 
        - 선언부에서 왼쪽에서 오른쪽으로 실행합니다.
        - 대입 연산자의 왼쪽 부분의 연산을 Constant Pool에 저장합니다.
            - 이미 저장되어 있는 값이 있다면 다시 저장하지 않고 기존의 값을 가져다 사용합니다.
        - 대입 연산자의 오른쪽의 변수에 Constant Pool에 저장된 값의 주소를 저장합니다.
        - 데이터 타입은 부가적인 설명입니다.
        - 약 1GB 정도 제공됩니다.

    - String Constant Pool
        - 문자열을 저장하는 공간입니다.
        - 문자 하나가 추가될 때마다 새로 저장됩니다.
            - '1', '1을', '1을 2', '1을 2와 더하면', '1을2와 더하면 3'
        - 약 1GB 정도 제공됩니다.
        - 수동으로 선언하는 경우 이 공간에 저장되지 않고 바로 Heap 공간에 저장됩니다.
            - 같은 값이라도 주소가 다르므로 false가 반환됩니다.
        - 불변형_값이 지워지지 않으므로 데이터 쓰레기 값이 축적됩니다.
            - Heap 공간에 바로 저장하는 것이 좋습니다.

    - UML_Unified Modeling Language_통합 모델링 언어
        - 개발자 간의 의사소통을 원활하게 하기 위해 표준화한 모델링 언어입니다.
        - 문제를 시각화하여 간단하게 요약하는 방법입니다.

반응형