ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 초보 개발자 공부일지(JAVA) [인스턴스와 힙메모리] with 패스트캠퍼스#4
    초보 개발자 성장 일지/FC교육 2023. 2. 23. 23:43

    오늘도 강의를 들었다. 주제는 인스턴스와 힙메모리였다.

    메모리에 대한 개념은 너무 어렵다... 그래도 포기하지 않고 열심히 강의를 돌려보았다!

    그렇게 어느 정도 이해가 되어서 늦은 저녁인 지금에야 일지를 쓴다.

    까먹기 전에 기록을 시작하겠다!

    그럼 바로 본론으로 넘어가 보자!

     

    스택(Stack)메모리와 힙(Heap)메모리 --

    일단 이 두 개의 메모리 형태를 알고 넘어가야겠다.

    앞선 일지에서 함수에 대해 이야기를 했었는데, 그때 빼먹은 게 메모리에 대한 이야기였다.

    그래서 여기서 보완을 하고, 힙 메모리와 비교를 해보려 한다. 왜냐하면, 두 개를 같이 봐야 이해가 빠르기 때문이다.

    내가 노트로 정리한걸 보면서 이야기를 이어가 보자.

    나는 함수에서 사용되는 것이 스택메모리이고, 인스턴스(객체) 생성에서 사용되는 것이 힙메모리라고 간단하게 정리를 해보았다.

     

    우선 스택메모리에 대해 이야기를 해볼까 한다.

    함수가 작동을 할 때 여러 변수나 매게변수들의 자료가 들어올 것이다. 그럼 이것을 작업할 공간이 필요한데, 그 공간이 스택메모리 내부에 생긴다. 그림 처럼 스택메모리 내부에 수행할 공간이 생기고 그쪽으로 자료들을 보낸다.  그리고 수행을 모두 완료했으면, 값은 반환하고, 그 공간은 사라지게 된다.

    이것이 스택메모리이다.

     

    그에 반해,

    힙메모리는 스택메모리와 달리 별도의 공간이 생기지 않고, 인스턴스 자신만의 공간을 할당 받는다.

    스택메모리에서 멤버변수나 메서드(함수) 등이 인스턴스를 생성하면, 그 인스턴스들은 힙메모리로 주소를 할당 받는다.

    이것이 힙메모리이다.

     

    그래서 간단하게, 함수와 관련된 것은 스택메모리 / 인스턴스, 객체생성과 관련된 것은 힙메모리라고 정리를 했다.

     


    인스턴스(instance)--

    그럼 구체적으로 인스턴스는 무엇일까?

    이건 강의 시간에 짠 코드이다. 앞서 메서드 파트와 비슷하다는 것을 알 수 있을 것이다.

    앞선 내용을 다시 되짚어 보면,  메스드와 멤버변수가 있는 클래스를 이용해 객체를 만드는 것이 기억날 것이다.

     

    Student studentKim = new Student();

     

    이런 식으로 코드를 짜서 studentKim이라는 학생(객체)을 만들 수 있다고 했다.

    (어제는 studentLee였지만, 오늘은 Kim이다. 하하, 여하튼..)

    여기서 'studentKim'이 인스턴스이다. 이것이 힙메모리에 공간을 할당 받는 것이다.

    이 'studentKim'의 성질을 보기 위해 콘솔창에 띄워 보면,(System.out.println();) 메모리 주소가 나오는 것을 확인할 수 있다.

    내가 위 사진에 아래 콘솔창 쪽에 빨간색으로 표시한 부분이 'studentKim'이라는 인스턴스가 할당 받은 메모리 주소이다.

    이렇게 인스턴스는 힙메모리에 공간을 할당받는 다는 걸 알 수 있다.

     

    어제는 그런데 생각해보면 인스턴스는 객체이다. 앞서 객체라고 계속 표현을 했지만, 강사님에 따르면 인스턴스라는 표현이 좀 더 개념에 맞다고 한다. 그래서 앞으로는 '객체를 생성한다'라는 표현 보다는 인스턴스를 생성한다고 표현을 하고자 한다.

    여하튼,

    인스턴스는 간단하다. 클래스를 통해 생성되는 객체인 것이다.

    이 인스턴스의 특징들을 정리해 보았다.

     

    - 인스턴스는 각각 다른 멤버변수 값을 가지게 된다.

    - 인스턴스는 new 키워드를 사용하여 생성된다.

    ex) Student studentKim = new Student();

    - 하나의 클래스에서 여러 개의 인스턴스가 생성되고, 각각 다른 메모리 주소를 가지게 된다.

     

    오늘은 공부방이 아닌, 집에서 공부를 했다.

    오늘 공부도 마무리 완료!

    오늘은 인스턴스가 무엇인지 그리고 스택메모리와 힙메모리에 대해 공부해보았다.

    앞선 함수나 메서드 보다는 간단한 개념이었던 것 같다.

     

    공부일지 1편에서도 언급한바 있지만, 이 자바의 클래스는 정말 엄청난 것 같다.

    하나의 객체에게서 필요한 정보를 정말 편리하게 많이 찍어낼 수 있다고 생각한다.

    여러 카테고리의 정보들이 분산되면 정리하기가 어려운데, 하나의 객체가 가지는 정보의 꾸러미가 클래스를 통해 생성되니

    데이터를 관리하는데 편리하고, 클래스에 로직이 짜여져 있으니 정보를 얻는데도 유용하다.

    정말 재미있는 언어라고 생각한다.

     

    앞으로 더 깊게 배워갈거 같은데, 기대가 된다!

     

    오늘은 여기까지!

     

     

    패스트캠퍼스 홈페이지

    http://bit.ly/3Y34pE0

     

    패스트캠퍼스 [직장인 실무교육]

    프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

    fastcampus.co.kr

     

    본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

     

    댓글

Designed by Tistory.