我怎样才能在J2me中计算某种类型的对象

时间:2009-10-13 08:46:40

标签: java-me

我需要知道我的系统中有多少对象存在于任何时候。带有静态变量和构造函数/析构函数中的递增/递减的标准方法不起作用,因为错过了Object.finalize方法。

4 个答案:

答案 0 :(得分:2)

你不能使用任何这种反射内容,因为它不受J2me的支持。

唯一的选择是在WTK / bin / prefs下启用探查器。那里还有一个记忆监视器。

答案 1 :(得分:1)

作为一个强硬的答案,您可以使用特殊的单件工厂生成所有对象,您可以在生成新对象时增加计数,并通过此工厂删除它们:

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.

这种方法并没有给你准确的结果,而是全面的。

答案 2 :(得分:0)

在标准Java中,您可以使用WeakReference,但这在J2ME中不可用。此外,没有标准API来枚举所有对象。在Java中执行此操作的“最简单”方法是编写垃圾收集器。

因此,您唯一的选择是在Java IDE中运行代码,该代码可以在运行时进行分析或手动处理对象的破坏,因此您可以对它们进行计数。

答案 3 :(得分:0)

如果你在运行时需要它,并希望以编程方式处理它作为你的应用程序的一部分,这很难 - 否则你可以create heapdumps并分析它们。然后你就会知道当前使用了多少个对象(即在堆上)