前言
由于EEPROM和Flash都有寿命限制,应用如果频繁的在同一区域进行擦写将会增加数据丢失的风险,本章节探讨如何设计应用来降低对应的风险。
F1 - Check where all your variables are stored and accordingly move them if there is a risk ofNVM stress (guaranteed 100,000 updates for E2PROM and FLASH technologies)
检查所有变量的存储,如果有NVM风险,则考虑移动它们
描述:
在Java Card中,对象都存在于EEPROM中:
1:基础类型(byte、short…)的全局变量
2:对象(通过new实现的)
只有以下存在于RAM中:
1:局部变量
2:方法的参数
F2 - Avoid writing in EEPROM upon STATUS event reception
注册了status事件的应用将会在每1或2分钟就被触发一次,因此一定要非常注意在此过程中对EEPROM的操作
F3 - Avoid writing in EEPROM upon file update events when the concerned file is a HIGH update activity file
有些文件是高频更新的,注意注册了FILE_UPDATE事件的应用在此过程中的操作,同F2
F4.1 - Avoid passing too many parameters in a function (4 or 5 max)
F4.2 - Avoid declaring too many local variables inside each method
F4.3 - Reduce the overall nesting level (ie a function calling a function). Latest Gemalto Javacards allow more than 20 nesting levels
F5 - ALL objects making up the application are created during installation
应用相关的 对象都在安装时创建,防止某些卡片不支持垃圾回收
F6 - If your application uses the Java Card transactions:
事务的关键部分应该尽可能小
begin和commit应该在同一个方法中完成
一个method开启了事务,那么该method的所有路径都要完成事务
事务临界区应由try-catch块保护
F7 - Insert a MORE TIME proactive command if your toolkit process is longer than 2s in order not to block the handset
如果Toolkit应用执行时间超过了2s,则插入MoreTime命令以防止手机阻塞
F8 - In reentrance, take into account that the OS resources are limited: proactive handlers,available RAM.Toolkit applications must be tested in reentreance, ie when a CAT context is already active
重入时要考虑OS的资源和主动式命令的句柄