我想出了一个基于磁盘的数据结构来存储传入的实时数据,这不在内存中,因为数组可能会填满并导致 jvm 崩溃。数据结构和算法工作得很好。我唯一的问题是,这会极大地影响 SD 卡的使用寿命吗?
我知道 sdcard 对它们的读写有限,但有多少是“有限的”。每次会话平均写 20 分钟到 sd 卡是否会极大地影响 sd 卡,以至于用户看到是这个应用程序杀死了它?
我想我记得现代闪存适合数十万次重写。据我所知,读取次数没有限制。
如果它让您感觉更好,Windows Vista 支持称为 ReadyBoost 的功能,它允许您在 USB 闪存驱动器上分配缓存空间以提高性能。我认为只要你设法以某种方式平衡写入,你应该没问题。
此外,一些闪存模块具有集成写入优化的内置控制器,因此它们会在后续写入操作中尝试写入内存的不同区域。但是,您可能不能指望这一点,除非您确定您的特定存储卡是否具有集成控制器(特别是 SD,它没有集成控制器,但也许它仍然具有一些其他机制它使写入均匀)。
编辑:这是一个更详细地解释内存磨损和“磨损均衡”的链接: http ://en.wikipedia.org/wiki/Flash_memory#Memory_wear
卡上的写入次数为 100'000 秒。这是闪存扇区擦除的次数,可能比磁盘扇区大得多。
我找到了以下带有计算的文档:STEC SMALL CARDS WEAR LEVELING AND LIFETIME CALCULATOR
示例之一:寿命 = 2,000,000 x (512MB – 100MB – 128KB) / (50MB x 10/天) = 4,513 年
因此,如果您进行合理的设计工作(即不要为您写入的每个字节打开/关闭文件,因为这可能会强制刷新并因此写入)我什至不会费心设置非常广泛的测试......
我购买了早期的 eeepc,它使用 SD 卡作为“硬盘驱动器”,所以我对讨论这个问题很感兴趣,特别是因为我有 2Gb 型号,所以我将内部 ram 设置为跨越 4GB SD 卡. 很难得到真正的硬数据,但我能找到的所有知情选项表明,这在机器的合理生命周期内应该不是问题(当然我的 eeepc 在 ext3 文件系统上运行得非常愉快SD卡-即大量活动-绝对没有问题-因为我破解了它)。
意见似乎是现代 SD 卡应该给你至少 100,000 个周期,所以我认为如果你的设备的使用寿命只有几年,你可以合理地期望它会好起来。但是,您唯一可以确定的方法是设置一些测试,让您的程序连续写入一批样本卡,并查看它们是否在三个月左右的时间内失败。我也直接问厂家。