Как я могу считать объекты какого-то типа в J2me

Мне нужно знать, сколько объектов какого-либо типа существует в моей системе в любое время. Стандартный метод со статической переменной и и приращением / уменьшением в конструкторе / distructor не работает, потому что пропущен метод Object.finalize.

13.10.2009 08:46:40
Просто интересно, зачем это нужно ... для оптимизации?
Fostah 13.10.2009 11:56:56
На мобильной платформе , что я использую GarbageCollector работает очень нестабильно , и я подозреваю , что утечка системных объектов (SocketConnection)
Pirks 13.10.2009 16:10:40
4 ОТВЕТА
РЕШЕНИЕ

В качестве брутфорс-ответа вы можете создать все свои объекты с помощью специальной синглтон-фабрики, где вы можете увеличить счетчик при создании нового объекта и удалить их через эту фабрику, чтобы:

Object newOne = ObjectsFactory.getInstance().getNewObject(); // in this method count++
...
...
// we don`t need newOne anyMore
ObjectsFactory.getInstance().releaseObject(newOne); // here count--
newOne = null;  // let gc do its work.

Такой подход не дает вам точных результатов, но что-то круглое.

1
13.10.2009 09:36:07

В стандартной Java вы можете использовать, WeakReferenceно это не доступно в J2ME. Также нет стандартного API для перечисления всех объектов. Самый простой способ сделать это в Java - написать сборщик мусора.

Поэтому ваш единственный выбор - запустить код в Java IDE, которая может выполнять профилирование во время выполнения или обрабатывать уничтожение ваших объектов вручную, чтобы вы могли их посчитать.

0
13.10.2009 09:06:41

Если вам это нужно во время выполнения и вы хотите обрабатывать его программно как часть своего приложения, это довольно сложно - в противном случае вы можете создавать heapdumps и анализировать их. тогда вы будете знать, сколько экземпляров каких объектов используется в данный момент (т.е. в куче)

0
13.10.2009 09:10:59

Вы не можете использовать эти вещи для отражения, потому что они не поддерживаются J2me.

Единственная ставка будет включать профилировщик под WTK / bin / prefs. там также есть монитор памяти.

2
13.10.2009 09:54:04
Есть ли причина, по которой вам нужно использовать Samsung SDK? Вы можете профилировать свое приложение через стандартную WTK, вы должны получить аналогичные результаты. Очевидно, что он не совместим на 100% с точки зрения точного времени / обработки данных, но я бы не стал доверять эмулятору в любом случае.
drubin 20.10.2009 17:13:39