Java卡的内存管理

每个实例(intance)放在EEPROM或者RAM里。这依赖于对象(object)的内容
1. 如果对象的内容在卡中从一个session到另一个session都保持不变,它的内容和引用都会保存在EEPROM中,只要它从属的applet 没有被删除。
2. 如果内容会改变,发生下面的事件时会被清零:
CLEAR_ON_RESET
CLEAR_ON_DESELECT


临时内容会存放在RAM中,但它们的引用会放在EEPROM中
内容也保存在EEPROM中的:
所有基本数据类型(byte,short)的全局变量;


实例变量/Instance variables(全局变量/global variables)
在 对象安装时 创建。
局部变量/Local variables:只能在函数内部 或者 代码块 内部访问

可以使用 静态变量时 ,不要用实例变量

但静态变量是类变量, 可能会引起一些安全问题(可能被其他applet访问)


使用new创建出来对象
可以使用 局部的基本类型(byte, short)
但不要使用 局部的 byte[] 和 object
低版本的Java Card没有垃圾回收


常量 加上 static final 关键字
用基本数据类型,而不要对其进行二次封装,因为会带来更多内存消耗

在applet的构造方法里,就把所有的对象都建立好,这样在安装时就能确定自己需要多少资源。


用switch-case代替 if-else

使用复合算术语句而不是单独的赋值

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注