2012-02-15 38 views
0

如何獲取類java.awt.Image的實例使用的內存?java.awt.Image使用的內存對象

other similar questions,但有計算由一個特定的類(java.awt.Image)的目的所使用的存儲器的更簡單的方法?

我寧願以編程方式獲取字節數量,而不是通過分析器,以便我可以使用它來計算我的應用程序內部的內存統計信息。

在此先感謝。

+1

創建其中約1000個,看看有多少堆增長。再次用不同的圖像大小進行計算並計算公式。對於給定的顏色深度,應該大致爲線性方程式 - 「k1 + k2 * num_pixels」。 – 2012-02-15 13:03:23

回答

3

這在java.awt.Image的實現之間會有所不同,因爲它取決於子類如何決定存儲數據。

但是對於BufferedImage,img.getData().getDataBuffer();會爲您提供存儲圖像的原始DataBuffer。然後您可以使用getDataType()getSize()來確定數據緩衝區的容量。