이번 1장 전체의 핵심은 바로 "객체" 였던거 같다.
객체를 어떻게 생성해야 메모리 낭비를 안할 수 있는지, (스태틱 팩토리 메소드 고려)
싱글톤으로 해야하는 이유와 객체 참조 제거 등
객체 지향에서 객체라는 단어가 같는 무게에 대해? 더 깊이 알 수 있었다!!
사실 당연한 말인데 매번 중복 생성했던거 같다.. 의식 하지 안 해서 그런가
String s = new String("A"); // 이렇게 매번 적으면 매번 새로운 객체를 쓸데없이 생성하고 참조!
String s2 = "바보아니야!"; // 이렇게 적으면 이 단어가 저장된 공간만을 참조!
여러번 재사용하는 객체에 관해서는 재사용 할 수 있는 방법을 고민하고 객체를 만들어야한다!
elements[size] = null;
이렇게 해서 null로 참조 시키면 아무것도 참조하지 않는 거여서 계속 이상태면
가비지 컬렉터가 객체를 회수한다!!
하지만 잘못해서 이걸 사용해버리면 NullPointerException이 발생할 수도 있다!
이 참조를 보관했던 참조변수가 다른 객체를 참조하도록 하거나 유효범위,
즉 스코프를 벗어나게 하는 것이다!
특정 함수에서만 필요하다면 이 함수 내에서 지역 변수로 만드는게 좋은 듯!!
가비지 컬렉터라는 것에 대해 알기 위해서는 그 전에 더 큰 범주인 JVM애 대해 정확히 알고 있어야한다!
자바코드를 컴파일(기계어로 번역)하여 .class파일로 변환한다
그 후 이 코드가 JVM 환경에서 실행됨
그리고 각각의 운영체제에 맞는 기계어로 번역해준다!
차고로 JAVA로 작성된 프로그램은 JVM에서만 돌아간다!
자바로 개발된 프로그램을 실행하면 JVM은 OS로부터 메모리를 할당 받는다!
자바 컴파일러가 자바 소스코드를 -> .class파일인 바이트 코드로 컴파일 한다
classLoader를 통해 JVM Runtime DataArea로 로딩함!
로딩된 .class파일들은 Execution Engine을 통해 각각의 OS에 맞게 해석됩니다