
안드로이드 애플리케이션에서 max heap을 print 해보면 16MiB가 나온다.
G1 phone은 RAM이 192MiB이다. 이 때 application은 16MiB의 한계를 가진다.
G27 phone정도가 나와서 RAM이 1024MiB가 되었다. 이 때 application에게는 16MiB의 제한이 주어진다.
android application은 각각이 별도의 process로 실행되지만(꼭 그렇지는 않다고 따지지 말자) max heap따위를 별도로 지정하진 못한다.
Java SE나 EE에서 max heap을 1GiB씩 할당하고도 불만을 토하던 개발자는 쪼잔한 모바일 하지 말자.
Garbage collector도 구식이다. 물론 나는 그런것도 못 만들지만 구리긴하다.
generational GC? 그런거 없다. short lived object들을 부담없이 만드는 신세대 개발자들은 고서를 찾아 object pool따위의 구식 optimization을 공부해야 한다.
메모리랑 상관 없어서 JIT도 없다는 이야기는 안 할라구..
P.S) 그런데도 500Mhz 근처의 ARM CPU를 사용하는 android application들의 반응 속도도 빠르고 그래픽이나 애니메이션도 자연스럽다. 왜 그럴까? 그건… 알면 알려주세요..^^
