sussa
컴퓨터가 할 일은 컴퓨터가.
sussa
전체 방문자
오늘
어제

블로그 메뉴

    • 분류 전체보기 (58)
      • Language (58)
        • JAVA (58)

    공지사항

    인기 글

    태그

    • Method
    • Stream
    • inheritance
    • Class
    • 조건문
    • 다형성
    • 스파르타코딩클럽
    • 자료구조
    • 재귀
    • singleton
    • 최종연산
    • 개발자
    • java
    • Database
    • Web
    • 캡슐화
    • Thread
    • Til
    • Algorithm
    • Instance
    • 상속
    • HTML
    • DI
    • 웹개발종합반
    • tree
    • recursion
    • BinarySearchTree
    • binaryTree
    • CSS
    • spring

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    sussa

    컴퓨터가 할 일은 컴퓨터가.

    Java Memory Structure
    Language/JAVA

    Java Memory Structure

    2022. 9. 3. 01:13

    🎯 목표 : 메모리 구조에 대한 이해(Static, Stack, Heap)

    📒 Static, Stack, Heap

     

     

    📌  Static 메모리

    • Class영역 method 영역으로도 불린다.
    • Static 메모리는 프로그램(JVM)이 로딩될때 생성되며 종료 될때까지 존재한다.
    • Class의 모든 정보가 로딩과 동시에 저장된다.
    • Static 변수와 메소드는 어디서든 접근이 가능해진다.
    • 인스턴스 메소드의 정보도 저장되어 있으며, 객체가 생성되어 Heap에 할당되고 메소드를 호출할때는 Static 메모리의 인스턴스 메소드를 참조하여 Stack 메모리에 저장하게되며, Stack 메모리에서는 메소드가 동작하는 동안 임시로 메소드 데이터를 저장하게 된다. 메소드 동작이 끝나면 함께 삭제된다. 
    • 아래 글에서 Static 변수와 메소드, Instance의 관계를 메모리 구조와 관계지어 복습 하였다.
      2022.08.17 - [Language/JAVA] - Java Static과 Instance의 관계
     

    Java Static과 Instance의 관계

    💻 Java Static(정적) 과 Instance(객체) 🎯 목표 : Static 변수와 메소드를 활용하기 위한 기초를 이해 생활코딩의 강의 예제를 활용 📒Static Static 변수와 메소드는 모든 객체가 공유하여 하나의 변수

    sussa1933.tistory.com

     

    📌  Stack 메모리

    • 메소드 내에서 정의하는 기본 자료형의 모든 지역변수의 데이터를 저장한다.
    • 파라미터, 리턴값 등 메소드 작동중 임시적으로 사용되는 모든 값을 저장한다.
    • 지역 변수는 { } 로컬 영역에 적용되는 변수를 의미한다.
    • 메소드가 호출될때 메모리에 할당되고 종료되면 삭제된다.
    • 간단하게 반복문을 예로 들수 있다.  반복문이 종료되고나면 int 데이터 타입 i는 참조할수 없게 된다.
    void test () {
    	for(int i=0; i<3; i++){ // Stack 메모리에 int 데이터 타입 변수 i 가 할당된다
            }
       	 System.out.println(i); // 컴파일 에러 발생
    }
    • Stack 메모리의 데이터 구조는 앞에 블로깅 했던 내용을 다시 확인하였다.
      2022.08.27 - [Language/JAVA] - Java Stack & Queue
     

    Java Stack & Queue

    🎯 목표 : 스택과 큐의 구조에 대한 개념 이해 📒 Stack & Queue 📌 Stack LIFO 구조, 마지막에 저장된 것을 제일 먼저 꺼낼수 있다. ex) 수식 계산, undo/redo, 뒤로/앞으로 이동(웹) Stack은 클래스다. 📌 Qu

    sussa1933.tistory.com

     

    📌  Heap 메모리

    • new 연산자를 사용하여 객체를 만들 때 저장된다.
    • 참조형 자료를 저장하는 메모리다.
    • 생성된 객체는 Heap 메모리에 할당되며, 객체 생성과 동시에 Stack 메모리에 객체의 참조 주소가 저장된다(객체의 참조변수).
    • 할당된 데이터중 메소드의 데이터는 동작할때 Static 메모리 영역의 내에 있는 메소드 데이터를 참조하여 Stack에 정보를 저장한다. 동작이 끝나면 Garbage Colletor에 의해 제거된다.
    • 객체 생성을 예제로 들어 확인해보았다.
    class TestData { }
    public class StaticMember {
        public static void main(String[] args) {
            TestData me = null; // 객체 선언 Stack 메모리 할당
            System.out.println(me);  // null 출력
            me = new TestData();
            System.out.println(me); // Heap 메모리 주소 출력
        }
    }
    출력값
    null
    TestData@63961c42
    • 객체 선언만 하고 초기화는 하지 않았을때, Stack 메모리에 참조변수가 할당되었고, 객체 초기화를 한 이후 Heap 메모리에 할당되어 주소값을 출력하는것을 확인 할수 있다.

    'Language > JAVA' 카테고리의 다른 글

    Java 열거형  (0) 2022.09.03
    Java Generics  (0) 2022.09.03
    Java Object, Class, Instance_02 - OOP  (0) 2022.09.02
    Java Collection Framework 요약  (0) 2022.08.29
    Java Class Collections  (0) 2022.08.29
      'Language/JAVA' 카테고리의 다른 글
      • Java 열거형
      • Java Generics
      • Java Object, Class, Instance_02 - OOP
      • Java Collection Framework 요약
      sussa
      sussa
      Efforts to take on a challenge

      티스토리툴바