할 것도 많고 시간이 빡빡하니 강의를 빠르게 빠르게 넘기고 있다
5-2 기본배열과 객체배열
Student[] std = new Student[4]; 로 객체의 배열을 만들 수 있고 인덱스로 접근 가능함.
6-1,2,3 static과 메모리의 관계
메인 함수는 static이고 객체를 생성하지 않는다.
static 멤버들은 그 클래스를 사용하는 시점에 정해진 메모리 위치에 단 한번 로딩되고, 호출된 메서드는 call stack frame area(Stack area)에 기계어코드 push 한 뒤 동작을 시작한다.
stack area에서의 함수의 실행은 C언어와 비슷하게 돌아감. LIFO. PC를 보고 현재 프로그램 실행 위치를 알 수 있음. stack 에 아무것도 없으면 프로그램이 종료됨. 메서드 안의 지역변수는 메서드의 종료와 함께 사라짐.
method area에는 static-zone 와 non-static-zone이 있음
non-static 멤버들의 접근 방법은 - non static 한 공간에 객체를 생성하면서 메모리(Heap Area)에 로딩 시키는 것임. new 키워드로 생성된 객체들은 Heap Area에 저장됨
static이 안 붙은 메서드는 객체를 생성하므로 -> 인스턴스메서드라고 부른다
static이 붙은 메서드는 객체를 생성하지 않으므로 -> 클래스메서드라고 부른다. 클래스이름.호출메서드 로 접근 가능
자주 사용해야 하는 메서드는 static으로, 클래스 메서드로 만드는게 합리적이다. 인스턴스메서드는 객체를 생성할 때/제거할 때 오버헤드가 있을 테니까.
궁금한 부분 -> 객체에 커다란 데이터가 들어갈 때 메모리 주소가 어떤식으로 변하는지 코드를 짜 보면서 알아보자
-->>> 불가능!! System.identityHashCode([변수명]) 함수를 통해 어떻게 어떻게 하던데 이 값이 실제 주소값을 의미하는 것도 아니며, 자바에서 메모리 주소를 알아보려는 짓은 의미없다는 답을 얻었다. C언어의 패러다임으로 자바를 보지 말라고 함.
Heap 공간에 Generation이라는 말이 붙기도 한다. 그 이유는 GC가 힙 공간의 객체들을 관리할 때, 오래 사용된 객체에는 높은 Generation, 방금 들어온 객체에는 낮은 Generation을 붙이고 나중에 Search할 때 높은 Generation의 것들부터 검색해 처리하기 때문.
'취준, 대외활동 > 커널360' 카테고리의 다른 글
D-Day) Kernel360 사전과제 후기 (1) | 2023.10.09 |
---|---|
D-1) 사전과제 벼락치기중 (0) | 2023.10.08 |
사전과제 5일차 : 객체의 역할과 접근제어 (0) | 2023.09.30 |
사전과제 1일차 : 인텔리제이 세팅, 깃허브 연동, 강의 시청 (0) | 2023.09.27 |
부트캠프 넣어서 합격했음 (5) | 2023.09.25 |