这个问题是双重的,但希望不应该太长来回答,尽管它有自己的长度。不过,请随意回答其中的一部分,很抱歉让它如此详尽!
哪些对象是持久化的?哪些对象是瞬态的?
什么时候持久化对象?
对于第一部分,问题适用于:
存储在一个对象 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
相关分类