LoadFromDataset

时间:2016-05-03 16:28:45

标签: delphi

我在Windows 7 64位下使用Delphi 7 Enterprise。 我的电脑有16 GB的RAM。

我尝试使用kbmMemTable 7.70.00专业版(http://news.components4developers.com/products_kbmMemTable.html)。

我的表有150,000条记录,但当我尝试将数据从Dataset复制到kbmMemTable时,它只复制29000条记录,我收到此错误:EOutOfMemory

我看到了这条消息: https://groups.yahoo.com/neo/groups/memtable/conversations/topics/5769, 但它并没有解决我的问题。

1 个答案:

答案 0 :(得分:0)

内存不足可能有多种原因:

  • 您的应用程序通常使用太多内存。当使用FastMM内存管理器分配1.4GB时,32位应用程序通常会耗尽内存。其他内存管理器的范围可能更差或更好。
  • 记忆力量。对于请求的单个大分配,内存中可能没有足够的空间。 kbmMemTable将尝试将大约200000 x 4个字节分配为一个单独的大型分配。作为自己最大的单一配置。那不应该是个问题。
  • 太多的小分配导致上述内存碎片。 kbmMemTable将为每条记录分配1到n块内存,具体取决于Performance属性的设置。 如果Performance设置为fast,则将分配1个块(除非存在blobs字段,在这种情况下,将对每个非blob字段进行额外分配)。 如果Performance是平衡的或小的,那么每个字符串字段将为每个记录分配另一个内存块。
最好的问候 金/ C4D