javacards中的对象删除管理

时间:2015-02-10 16:21:12

标签: javacard

下面,您将看到关于对象删除管理的应用程序编程说明Java Card 3平台经典版的一部分:

void updateBuffer(byte requiredSize)
     {
     try
       {
          if(buffer != null && buffer.length == requiredSize)
             {
              //we already have a buffer of required size
              return;
             }

          JCSystem.beginTransaction();
          byte[] oldBuffer = buffer;
          buffer = new byte[requiredSize];

          if (oldBuffer != null)
             JCSystem.requestObjectDeletion();

          JCSystem.commitTransaction();
      }

    catch(Exception e)
      {
          JCSystem.abortTransaction();
      }
   }

问题是:

当我在JCSystem.requestObjectDeletion();表达式中调用if时,如何识别哪个缓冲区 oldBuffer 对象必须删除?

1 个答案:

答案 0 :(得分:2)

通常在启动期间执行对象删除。所以基本上系统可以像普通的Java垃圾收集器那样扫描内存。

如果未找到特定对象的引用,则可以收集该对象占用的空间。由于此时oldBuffer引用超出范围,因此不会引用旧数组。确切的内存管理取决于实现。