猿问

哪些对象在 Java Card 中是持久的?什么时候?

这个问题是双重的,但希望不应该太长来回答,尽管它有自己的长度。不过,请随意回答其中的一部分,很抱歉让它如此详尽!

  • 哪些对象是持久化的?哪些对象是瞬态的?

  • 什么时候持久化对象?

对于第一部分,问题适用于:

  • 存储在一个对象 Applet

  • 传递存储在一个对象中的对象 Applet

  • 仅存储在堆栈变量中的对象(未从 any 引用,甚至是传递性的Applet

  • 存储在使用构建的数组中的对象 makeTransientObjectArray

  • 传递存储在数组中的对象构建makeTransientObjectArray(例如,存储在存储在 a 中的对象的成员变量中makeTransientObjectArray

对于第二部分,它取决于第一个问题的答案。例如:

  • 我假设直接存储在瞬态对象数组中的对象不会持久化。在这种情况下,假设堆栈上的对象是持久化的,那么存储在那里的对象什么时候变成非持久化的?new Object当被放入瞬态对象数组时,它是否持久化和非持久化?

  • 如果一个对象同时具有来自瞬态对象数组和小程序的引用,并且小程序引用被删除,该对象是否未持久化?

先感谢您!


我已经查看了 JCRE 规范 v2.2.2(我正在使用的版本),但其中有一些不清楚的地方(因此这个问题很详尽,因为我觉得这更适合 Q/A 风格论坛):

  • 第 2-2 页提到 JCRE 使对象在传递存储在Applet. 但是,Glossary-7 声明对象默认是持久的。这种差异可能看起来不可观察,但会影响是否需要进行垃圾收集,无论何时都需要卡电源循环。

  • 第 5-1 页指出瞬态对象的字段绝不能存储在持久内存中。但它没有说明这对于瞬态对象数组中的对象是否也适用,例如。对象存储在瞬态对象数组中的对象字段中。

  • 第 5-1 页,同样的语句,可能与第 2-2 页冲突,当一个对象有一个对它的引用存储在瞬态对象数组和Applet.

这三个问题分别相当于:

  • 第 1 部分第 3 和第 5 部分(以及,根据答案,第 2 部分第 1 部分)

  • 第 1 部分要点 5

  • 第 2 部分要点 2


Smart猫小萌
浏览 137回答 2
2回答
随时随地看视频慕课网APP

相关分类

Java
我要回答