我需要知道我的系统中有多少对象存在于任何时候。带有静态变量和构造函数/析构函数中的递增/递减的标准方法不起作用,因为错过了Object.finalize方法。
答案 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并分析它们。然后你就会知道当前使用了多少个对象(即在堆上)