我的applet用作java卡中的简单文件系统。所以它会动态分配内存。当剩余的内存量不足时,它会回收内存。那我怎么知道我的小程序可用的剩余内存量
答案 0 :(得分:0)
这种方法是你想要的方法吗?
引自 Java Card平台,版本3.0.1,经典规范:
getAvailableMemory(byte memoryType)
public static short getAvailableMemory(byte memoryType) throws SystemException
获取applet可用的指定类型的内存量。请注意,依赖于实现的内存开销结构也可能使用相同的内存池。
注意:
•由于开销要求,返回的字节数仅是可用内存量的上限。
•CLEAR_ON_RESET瞬态对象的分配可能会影响CLEAR_ON_DESELECT瞬态内存的可用量。
•CLEAR_ON_DESELECT瞬态对象的分配可能会影响CLEAR_ON_RESET瞬态内存的数量。
•如果可用字节数大于32767,则此方法返回32767.
•返回的计数不是可以创建的对象大小的指示,因为可以进行内存碎片。
<强>参数:强>
memoryType - 要查询的内存类型。上面定义的MEMORY_TYPE_ *常量之一。请参阅MEMORY_TYPE_PERSISTENT。
<强>返回:强>
指定类型的可用内存字节的上限
<强>抛出:强>
SystemException_,包含以下原因代码:
•如果memoryType不是有效的内存类型,则为SystemException.ILLEGAL_VALUE。
您可以简单地调用此方法并根据其输出决定回收或分配或释放一些字节的内存。
请注意,正如他/她的评论中提到的亲爱的npostas,JavaCard 3.0.4版添加了getAvailableMemory(short[] buffer, short offset, byte memoryType)
方法,可以将32位数字返回到短数组中。
(JCOP卡也有专有的API)