보다 세밀한 퍼포먼스 튜닝, 메모리 사용 패턴 튜닝이 가능하다는 거지.
가비지 컬렉터가 모든 관리를 다 해주는 자바 같은 환경에서는
가비지 컬렉터가 하는 대로 밖에 할 수가 없고, 가비지 컬렉션 특성상 메모리 낭비도 심함.
그래서 메모리 자원이 한정된 임베디드 장비 같은 데서는 부적합하지.
메모리 용량이 늘어난 스마트폰에서나 자바를 쓸 뿐.
보다 세밀한 퍼포먼스 튜닝, 메모리 사용 패턴 튜닝이 가능하다는 거지.
가비지 컬렉터가 모든 관리를 다 해주는 자바 같은 환경에서는
가비지 컬렉터가 하는 대로 밖에 할 수가 없고, 가비지 컬렉션 특성상 메모리 낭비도 심함.
그래서 메모리 자원이 한정된 임베디드 장비 같은 데서는 부적합하지.
메모리 용량이 늘어난 스마트폰에서나 자바를 쓸 뿐.
궁금한게 c/cpp에서 메모리를 직접 다룰수 있다는게 구체적으로 무슨말임? 프로그램에서 참조하는 메모리 영역은 실제로는 프로세스한테 할당된 가상메모리이고, 내가 참조하는 데이터들이 실제 물리메모리(ram)의 어느 주소에 위치하는지는 알수없지않음?
메모리를 다룬다고 이해하지 말고 메모리 모델을 직접 다룬다고 이해하면 쉬움
그건 CPU에서 메모리 접근 방식에 layer를 하나 더 깔았을 뿐이고. 사실 운영체제도 물리 메모리는 접근 불가능해. 페이지 테이블 건드려야 가능. 프로그램이 접근 가능한 가장 low level의 memory access가 가능하다는 거지. C/C++는. 포인터가 가지는 값이 가상 메모리 시스템에 묶인 가상 주소인지, 실제 물리 메모리(RAM) 상의 주소인지는 환경 차이이고.
하지만 Java를 쓴다 하더라도 Real World 어플리케이션에선 JVM 눈치봐가면서 (GC-aware) 코드 작성해야하는게 현실
그렇군요