Whiteship's Note

'객체 크기'에 해당되는 글 1건

  1. 2007.08.14 객체 크기 구하기 (2)

객체 크기 구하기

Java : 2007.08.14 21:52


Object 클래스에 size() 라는 메소드가 없습니다. 그럼 객체의 크기를 알 수 없을까요;;

약간 돌아가면 알 수 있습니다. Runtime 이라는 클래스를 사용하여 힙 영역의 크기를 재면 됩니다.

public class Size {
    public static void main(String[] args) {
        System.gc();
        Runtime r = Runtime.getRuntime();
        System.out.println("전체 힙 메모리" + r.totalMemory());
        long firstMemorySize = r.freeMemory();
        System.out.println("가용한 힙 메모리" + firstMemorySize);
        Object[] o = new Object[10000];
        for(int i = 0 ; i < 10000 ; i++){
            o[i] = new Object();
        }
        long lastMemorySize = r.freeMemory();
        System.out.println("객체 생성 후 가용한 힙 메모리" + lastMemorySize);
        System.out.println("Object 객체 하나의 메모리 크기는 " + (firstMemorySize - lastMemorySize)/10000);
    }
}
전체 힙 메모리5177344
가용한 힙 메모리5021040
객체 생성 후 가용한 힙 메모리4917928
Object 객체 하나의 메모리 크기는 10

재미있는 건 JVM 또는 JRE 마다 객체의 크기가 다르다는 것입니다.
위의 결과는 JDK6.0 정확히 JRE1.6.0_01 에서 확인한 결과고.. 같은 코드를 JRE 1.5.0_10에서 확인한 결과는 다음과 같스비낟.

전체 힙 메모리2031616
가용한 힙 메모리1884632
객체 생성 후 가용한 힙 메모리1773680
Object 객체 하나의 메모리 크기는 11

1 차이가 나네요. String 객체의 크기도 재미삼아 재봤습니다.

6.0에서는 42
전체 힙 메모리5177344
가용한 힙 메모리5021040
객체 생성 후 가용한 힙 메모리4595032
String 객체 하나의 메모리 크기는 42

5.0에서는 44
전체 힙 메모리2031616
가용한 힙 메모리1884632
객체 생성 후 가용한 힙 메모리1444456
String 객체 하나의 메모리 크기는 44


'Java' 카테고리의 다른 글

All About Sockets 1  (0) 2007.09.26
Java에서 URL 다루기 2  (2) 2007.09.26
Java에서 URL 다루기 1  (0) 2007.09.18
자바 네트워크 프로그래밍 기초 지식  (0) 2007.09.17
Autoboxing의 오묘함  (2) 2007.09.09
객체 크기 구하기  (2) 2007.08.14
때로는 공유하지 않는 것이 최선일 수 있다.(by ThreadLocal)  (4) 2007.08.10
ThreadLocal  (0) 2007.08.10
JMX  (0) 2007.06.06
Factory Method vs Constructor  (0) 2007.05.18
효율적인 문자열 연결 방법  (2) 2007.05.18
top

  1. kris jeong 2009.12.31 16:06 PERM. MOD/DEL REPLY

    좋은 자료 얻어갑니다.
    아래는 IBM JDK의 command 콘솔에서의 실행 결과입니다.
    그런데 Eclipse에서의 실행결과와 콘솔 실행결과가 좀 다르게 나오네요..

    os.name : Windows XP
    os.version : 5.1 build 2600 Service Pack 3
    java.vm.specification.vendor : Sun Microsystems Inc.
    java.fullversion : J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223-20060504 (JIT enabled)
    J9VM - 20060501_06428_lHdSMR
    JIT - 20060428_1800_r8
    GC - 20060501_AA

    java.vm.info : J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223-20060504 (JIT enabled)
    J9VM - 20060501_06428_lHdSMR
    JIT - 20060428_1800_r8
    GC - 20060501_AA

    java.runtime.name : Java(TM) 2 Runtime Environment, Standard Edition
    java.vm.name : IBM J9 VM
    java.runtime.version : pwi32dev-20060511 (SR2)

    Total heap memeory 4194304
    Available heap memory 3665328
    After Object creation, Available heap memory 3411768
    One Object's memory siae 25

    참고하세요..

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2010.01.02 07:50 신고 PERM MOD/DEL

    흠.. 그렇군요. 하두 오래전 글이라 객체 크기를 왜 구하려고 했었는지 기억도 안나네요.ㅋ

Write a comment.