代码之家  ›  专栏  ›  技术社区  ›  Pirks

如何计算J2ME中某种类型的对象

  •  2
  • Pirks  · 技术社区  · 17 年前

    我需要知道在我的系统中有多少类型的对象存在。带有静态变量和构造函数/distructor中的递增/递减的标准方法不起作用,因为缺少object.finalize方法。

    4 回复  |  直到 17 年前
        1
  •  1
  •   St.Shadow    17 年前

    作为一个蛮力的答案,您可以使用特殊的单例工厂生成所有对象,在这里,您可以在生成新对象时增加计数,并通过该工厂将其删除到:

    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
  •  2
  •   drubin    17 年前

    您不能使用任何反射的东西,因为J2ME不支持它。

    唯一的赌注是启用wtk/bin/prefs下的分析器。还有一个内存监视器。

        3
  •  0
  •   Aaron Digulla    17 年前

    在标准Java中,您可以使用 WeakReference 但在J2ME中没有。此外,没有标准的API来枚举所有对象。在Java中做到这一点的“最简单”方法是编写垃圾回收器。

    因此,您唯一的选择是在Java IDE中运行代码,这些代码可以在运行时进行分析,或者手动处理对象的销毁,这样您就可以对它们进行计数。

        4
  •  0
  •   msp albert muda    17 年前

    如果你在运行时需要它,并且想把它作为应用程序的一部分进行程序化处理,这是非常困难的——否则你可以 create heapdumps 分析它们。然后您将知道当前使用了多少对象实例(即堆上的实例)