代码之家  ›  专栏  ›  技术社区  ›  Grant Crofton

没有足够的存储空间来完成此操作-程序或存储内存?

  •  4
  • Grant Crofton  · 技术社区  · 14 年前

    我得到了一个用.NET CF 3.5编写的Windows Mobile应用程序来修复,其中一个问题是与存储有关。

    消息“存储空间不足,无法完成此操作”已出现几次-它已记录在SQL CE数据库中,并且总是在数据访问期间发生(但不是在数据访问的同一位)。

    我有点困惑的是,这是指程序内存(如RAM)还是存储内存(如永久存储器)。它似乎是存储内存,但设备似乎有足够的空闲空间。虽然存在一些内存不足的异常,但这些异常似乎与此问题完全无关(因为与图像相关的问题而在不同的时间发生)。

    我们使用的是单连接的SQL CE3.5,它与设备上的应用程序一起存储(而不是存储卡)。该设备是运行WindowsMobile6.1的摩托罗拉MC75。

    有什么想法吗?

    3 回复  |  直到 12 年前
        1
  •  8
  •   Hans Passant    12 年前

    这是一个低级的Windows错误,代码14,错误内存不足。错误消息没有提到“内存”,因为它并非总是由内存不足引起的。最典型的触发器是一个超过内核资源配额的程序。像10000个窗把手一样,还有很多其他的。这是为桌面版btw,我不怀疑它是低得多的WindowsMobile。

    好吧,这个计划是一只小猪。触发此错误的一种可能方法是不要对实现IDisposable的类的对象调用Dispose()。这将消耗内核资源,这些资源在垃圾收集器和终结器线程运行之前不会释放。这可能需要一段时间。SQL CE类当然是一个候选类。如果您不知道资源泄漏或过度使用是从哪里来的,那么就投资一个在CF上工作的分析器。

        2
  •  0
  •   TrustyCoder    14 年前

    分配了多少虚拟内存?如果可能,尝试增加值。

        3
  •  0
  •   C.Evenhuis    14 年前

    我不知道这是否也适用于MC75,但是 Start->Settings->Control Panel->System 应该有一个内存选项卡,您可以在其中调整RAM的可用内存量,以及为存储文件保留的内存量。

    这不适用于\permanent storage文件夹(或\storage card,在我们的设备上调用),而是适用于其他文件夹,如\temp。