2012-02-15 4 views
0

Как я могу получить память, используемую экземпляром класса java.awt.Image?Память, используемая java.awt.Image object

Есть other similar questions, но есть более простой способ вычисления память, используемую объектом конкретного класса (java.awt.Image)?

Я бы предпочел, чтобы количество байтов использовалось программно, а не через профилировщик, чтобы я мог использовать его для вычисления статистики памяти внутри моего приложения.

Заранее спасибо.

+1

Создайте около 1000 из них и посмотрите, сколько кучи растет. Сделайте это во второй раз с другим размером изображения и вычислите уравнение. Должно быть примерно линейное уравнение - 'k1 + k2 * num_pixels' - для заданной глубины цвета. –

ответ

3

Это будет отличаться от реализаций java.awt.Image, поскольку это зависит от того, как подкласс решает хранить данные.

Но для BufferedImage img.getData().getDataBuffer(); предоставит вам необработанный DataBuffer, который сохранит изображение. Затем вы можете использовать getDataType() и getSize() для определения емкости буфера данных.