Javacard - 垃圾收集期间的电力损失

Javacard - power loss during garbage collection

我注意到我的智能卡(带有 Omnikey 5121 的 NXP J2E145、J3A081、J3C145 reader)出现一些非常奇怪的行为:调用 JavaCard 方法后立即断电

JCSystem.requestObjectDeletion()

可能会损坏卡:在大约 10% 的此类断电之后,ATR 命令非常慢(1000 毫秒)并且我对任何其他 APDU(小程序选择、卡管理器身份验证等)没有任何响应。

我知道 requestObjectDeletion() 的行为取决于供应商特定的实现,所以我的问题很广泛而且开放...

是否在单个事务中处理垃圾收集"usually"?

是否有任何 "official" 建议不要在可能断电的情况下调用 requestObjectDeletion()?

您对 NXP 的卡片有类似的体验吗?

编辑:

我认为这可能是一个实现错误。一般来说,智能卡上不需要也不使用垃圾回收。

您应该通过良好的小程序设计在任何情况下避免垃圾收集。这样你就永远不会 运行 陷入内存问题。小程序通常在其生命周期内只安装一次,并且应该在卡的剩余生命周期内可用。

对于正常用例,垃圾收集通常需要很长时间。也许这就是为什么 Java Card 或底层系统库的程序员不希望它发生在安全环境之外的原因。