2010-02-04 4 views
1

J2ME에서 Hashtable 객체의 크기는 얼마입니까? Hashtable을 사용하기위한 오버 헤드는 무엇입니까?빈 Hashtable 객체의 크기는 무엇입니까?

+0

메모리 오버 헤드가 한 일이 다음과 같이

당신은 야구장 측정을 직접 얻을 수 있습니다. 확실히 CPU 사용량은 Hashtable에서 더 중요합니다. 재연의 빈도는 테이블을 사용하는 방법에 따라 달라집니다. –

답변

0

해시 테이블은 _numberOfKeys 및 _threshold에 대한 기본 개체 +2 ints (각각 4 바이트)에 대해 24 바이트입니다. _hash, _key 및 _value (내부 해시 테이블 변수)는 해시 테이블의 용량과 해시 테이블에있는 객체의 크기에 의해 결정됩니다. 용량을 생성자에 전달하지 않으면 용량이 11로 설정되고, 해시 테이블에 더 많은 용량이 필요할 경우 용량을 늘릴 논리가 있습니다.

_hash는 int 배열합니다 (hashs)이므로 해시 테이블과 동일 용량 (주의 : 용량 하지 키의 수) * 4 바이트. _key 및 _value는 Object 유형의 배열이므로 모두 null 인 경우에도 빈 포인터에 대해 4 바이트를 사용합니다.

희망이 있으면 누구에게나 도움이됩니다.

+0

확실히 J2ME 구현에서 누가 Hashtable.java 클래스를 작성했는지에 따라 다릅니다. 이 답변은 Sun Ltd PhoneME의 오픈 소스 버전을 의미합니다. –

+0

당신이 맞습니다 제가 쓰고있는 전화를 블랙 베리에 포함시켜야합니다. 나는 Hashtable 클래스가 RIM에 의해 구현되었다고 생각한다. – Tamar

2

빈 해시 테이블의 경우 이는 기기에 따라 크게 다를 수 있습니다.

Runtime rt = Runtime.getRuntime(); 
long freeMem = rt.freeMemory(); 
Hashtable ht = new Hashtable(); 
long sizeofHashtable = freeMem - rt.freeMemory();