Java me 如何计算J2me中某些类型的对象
我需要知道在任何时候我的系统中存在多少种类型的对象。构造函数/分发器中带有静态变量和递增/递减的标准方法不起作用,因为缺少Object.finalize方法。在标准Java中,可以使用Java me 如何计算J2me中某些类型的对象,java-me,Java Me,我需要知道在任何时候我的系统中存在多少种类型的对象。构造函数/分发器中带有静态变量和递增/递减的标准方法不起作用,因为缺少Object.finalize方法。在标准Java中,可以使用WeakReference,但在J2ME中不可用。此外,没有标准API来枚举所有对象。在Java中实现这一点的“最简单”方法是编写一个垃圾收集器 因此,您唯一的选择是在Java IDE中运行代码,该IDE可以在运行时进行评测,也可以手动处理对象的销毁,这样您就可以对它们进行计数。如果您在运行时需要它,并且希望将它作
WeakReference
,但在J2ME中不可用。此外,没有标准API来枚举所有对象。在Java中实现这一点的“最简单”方法是编写一个垃圾收集器
因此,您唯一的选择是在Java IDE中运行代码,该IDE可以在运行时进行评测,也可以手动处理对象的销毁,这样您就可以对它们进行计数。如果您在运行时需要它,并且希望将它作为应用程序的一部分以编程方式进行处理,这非常困难,否则您可以对它们进行分析。然后,您将知道当前使用了多少对象的实例(即堆上)作为蛮力答案,您可以使用特殊的单例工厂生成所有对象,在生成新对象时,您可以在其中增加计数,并通过此工厂将其删除以:
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.
这种方法不会给出确切的结果,但会给出全面的结果。您不能使用这些反射内容,因为J2me不支持它
唯一的赌注是在WTK/bin/prefs下启用探查器。那里还有一个内存监视器。只是想知道为什么需要这样做……为了优化目的?在我使用的移动平台上,GarbageCollector工作非常不稳定,我怀疑系统对象(SocketConnection)泄漏,您需要使用三星SDK的原因是什么?你可以通过标准WTK评测你的应用程序,你应该会收到类似的结果。就精确的时间/处理数据而言,显然不是100%兼容,但我也不相信模拟器。