2011-03-01 61 views
1

測量內存中地圖的大小,包括它所佔用的所有對象的大小。 它似乎並不直接。對象本身的大小可能會返回較小的大小,與實際大小相反。 有人建議我們可以使對象可序列化以獲得大小。這可能會給大小。如果可序列化的對象只有該Map,那麼是否可以獲取地圖中對象的數量以及它所持有的所有對象的大小?地圖使用的內存大小,包括它攜帶的所有對象

分析器可能是一種方法。即使它在顯示包含地圖的對象的大小時可能不顯示對象的大小。對象本身的大小可以單獨獲得,然後相加。任何想法?

回答

0

如果這是在Java中,如果對象是可序列化,使用java.io.ByteArrayOutputStreamjava.io.ObjectOutputStream

public static int measure(Object m) throws Exception {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream(baos);
    oos.writeObject(m);
    return baos.size();
}

相關問題