2014-09-06 3 views
-1

자바가 배열의 각 요소가 얼마나 커질 지 모를 때 얼마나 많은 메모리를 할당합니까?Object 배열을 초기화 할 때 Java에서 얼마나 많은 메모리가 할당됩니까?

+0

Java는 항상 배열의 크기를 알고 있습니다. 그것이 왜 그것의 요소의 수를 필요로하는지. – eldjon

+0

일반적으로 32-48 바이트의 헤더가 있으며, 일반적으로 배열 자체에 바이트 단위의 공간이 더해집니다. 할당은 일반적으로 16 바이트 또는 32 바이트의 경계로 반올림됩니다. –

+0

http://stackoverflow.com/questions/3444395/java-object-and-array-memory-location –

답변

4

자바는 배열의 각 요소가 얼마나 큰지를 항상 알고 있습니다. Java에는 배열의 프리미티브 배열 또는 개체 참조 배열의 두 가지 종류 만 있기 때문입니다.

프리미티브의 배열 인 경우 (int, long 등) 프리미티브의 크기입니다. 객체의 배열이면 객체 (포인터)에 대한 참조의 크기입니다.

+1

어, 정확히는 ... 현대 JVM은 힙 크기가 28GB보다 작 으면 압축 된 포인터 (즉, 4 바이트)를 사용합니다 ... – thkala

+1

byte [], short [] 및 char [] ? –

+0

@thkala는 (1)이 문제를 수정하고 (2) 더 일반적인 것으로 편집했습니다. 정보를 가져 주셔서 감사합니다, 나는 이것을 몰랐습니다. – Oak

관련 문제