代码之家  ›  专栏  ›  技术社区  ›  Faisal Abid

使用SD卡存储数据结构时的SD卡寿命

  •  2
  • Faisal Abid  · 技术社区  · 15 年前

    我已经想出了一个基于磁盘的数据结构来存储传入的实时数据,这不在内存中,因为数组可能会填满并导致JVM崩溃。数据结构和算法都很好。我唯一的问题是,这对SD卡的使用寿命有很大影响吗?

    我知道SD卡读写有限,但多少是“有限的”。写到SD卡上平均每个会话20分钟会对SD卡产生很大的影响,直到用户看到是这个应用程序杀死了它?

    3 回复  |  直到 9 年前
        1
  •  2
  •   Adriaan    15 年前

    卡上的写入次数是在DE100000中。这是闪存扇区擦除次数,可以比磁盘扇区大很多。

    我找到了以下包含计算的文档: STEC SMALL CARDS WEAR LEVELING AND LIFETIME CALCULATOR

    其中一个例子: 寿命=2000000 x(512MB_ 100MB_ KB)/(50MB x 10/天)=4513年

    所以,如果你做了一个合理的设计工作(也就是说,不要为你写的每一个字节打开/关闭文件,因为这可能会强制执行flushs,从而写入),我甚至不会费心设置非常广泛的测试….

        2
  •  2
  •   rob    15 年前

    我想我回想起现代闪存对几十万次的重写是很好的。据我所知,阅读次数没有限制。

    如果它让您感觉更好,Windows Vista支持一个名为ReadyBoost的功能,它允许您在USB闪存驱动器上分配缓存空间以提高性能。我认为只要你能设法把文章写得更均匀,你就应该没事了。

    此外,一些闪存模块具有内置的控制器,具有集成的写入优化功能,因此在随后的写入操作中,它们将尝试写入内存的不同区域。不过,您可能无法指望这一点,除非您确定您的特定存储卡是否具有集成控制器(特别是,SD没有集成控制器,但它可能仍然具有一些其他机制,通过这些机制,它可以平衡写入操作)。

    编辑:这里有一个链接,可以更详细地解释内存损耗和“损耗均衡”: http://en.wikipedia.org/wiki/Flash_memory#Memory_wear

        3
  •  1
  •   Cruachan    15 年前

    我购买了早期的eeepc,它使用一个sd卡作为“硬盘”,所以我对这方面的讨论很感兴趣,特别是因为我有2GB型号,所以我设置了内部RAM,将其扩展到4GB sd卡上。很难获得真正的硬数据,但我能找到的所有知情选项都表明,在机器的合理寿命内,这不应该是问题(当然,自从我黑客入侵后,我的eeepc在SD卡上的ext3文件系统上运行得相当愉快,也就是说,大量的活动——绝对没有问题)。

    人们似乎认为,现代SD卡应该给你至少100000个周期,所以我认为,如果你的设备寿命只有几年,你可以合理地期望是好的。但是,要确保这一点,唯一的方法是设置一些测试,让程序不断地向一批样本卡写入数据,并查看它们是否在三个月左右的时间内失败。我也会直接问制造商。