2011-04-21 1 views

답변

1

예 있습니다. Here이 어떻게 수행 할 수 있는지 보여주는 예입니다. 또 다른 방법은 객체를 선언하고 그 차이를보기보다는 객체가 인스턴스화되기 전후에 Runtime.freeMemory()를 가져 오는 것입니다.

+3

그럴 필요는 없습니다. 예를 들어 JVM이 힙 공간의 크기를 조정 (더 크게 만들기)하기로 결정한 경우 이전보다 할당 후에 여유 공간이 더 많습니다. – Liv

+0

많은 개체에 대해이 작업을 반복적으로 수행하면 대부분의 경우 올바른 크기를 얻을 수 있습니다. ;) –

+0

예, 완벽하지는 않지만 충분 한 개체 인스턴스가있는 경우이 값은 상당히 합리적입니다. –

0

프로파일 러를 사용하여 감사합니다.

기본적으로 객체의 크기는 자바에서 잘 알 필요가없는 것들 중 하나입니다. C/C++에서 왜 그렇게 중요한지는 알 수 없습니다. ;)

더 긴 대답은 Instrumentation.getSizeOf (Object)를 사용할 수 있지만 사용하기 쉽지 않다는 것입니다.

0

"크기"란 무엇인가요? 이것은 복잡한 토론입니다. 예를 들어 Java가 int 또는 char 등을 나타 내기 위해 사용하는 바이트 수를 의미합니까? 아니면 개체에 대한 참조를 저장하는 데 사용되는 바이트 수를 의미합니까? 또는 JVM에서 사용하는 내부 구조가 해당 오브젝트의 모든 데이터를 작성하고 저장하는 데 사용하는 바이트 수는 얼마입니까? 나는 지난 2 가지 질문에 대한 답변이 OS에 의존적이라고 추측하려고합니다. 나는 당신이 표준화 할 수 있다고 생각하지 않습니다. (예를 들어, 64 비트 머신에서는 OS가 32 비트가 아닌 64 비트 정수를 다루기가 쉽다. 내부적으로 Java int는 8 바이트로 표현되지만, java int의 스토어 만 32 비트 값)

일부를 찾을 수있는 방법이 있습니다 (예 : http://devblog.streamy.com/2009/07/24/determine-size-of-java-object-class/).하지만 OS마다 일관성이 없습니다.