Excel XLL 插件可以有多少内存?
How many memory an Excel XLL plugin can have?
在 XLW library 的帮助下,我正在使用 C++ 为 Microsoft Excel 编写一个 .XLL 插件。我的操作系统是windows7 64位版本,内存32GB;但我的 Excel 是 Excel 2010,32 位版本。
正在检查 GlobalMemoryStatusEx, it shows that the code in XLL can only see about 1200 MB virtual memory available (from ullAvailVirtual
in struct _MEMORYSTATUSEX),但可用的物理内存 (ullAvailPhys
) 约为 23 GB。
由于我的代码需要大量内存(每个计算线程大约 100MB),在发出 12 个线程后它遇到了错误的分配错误。
有没有办法增加可用内存?
- 这是 Excel
XLL
插件的限制吗?在控制台应用程序中,GlobalMemoryStatusEx
报告大约有 2034 MB 可用虚拟内存。
- 这是
XLW library
的限制吗?
- 这是
32-bit Excel
的限制吗?
XLL实际上只是重命名的DLL。如果你有一个 32 位的 Excel,那么整个 Excel 进程就有一个 32 位的虚拟地址 space 可以居住(并且 Windows 保留其中的一半用于OS)。因此,您的进程(XLL 和 Excel 本身)的总容量限制为 2G。
您的选择是:
- 切换到 64 位 Excel(这意味着您的 XLL 需要是 64 位的)
- 让 XLL 保持 32 位,并使其启动一个单独的(可能是 64 位)进程,并在其中进行处理。
后一种选择显然要复杂得多,并且在进程之间复制数据不会那么快 - 但它是一个选项。
在 XLW library 的帮助下,我正在使用 C++ 为 Microsoft Excel 编写一个 .XLL 插件。我的操作系统是windows7 64位版本,内存32GB;但我的 Excel 是 Excel 2010,32 位版本。
正在检查 GlobalMemoryStatusEx, it shows that the code in XLL can only see about 1200 MB virtual memory available (from ullAvailVirtual
in struct _MEMORYSTATUSEX),但可用的物理内存 (ullAvailPhys
) 约为 23 GB。
由于我的代码需要大量内存(每个计算线程大约 100MB),在发出 12 个线程后它遇到了错误的分配错误。
有没有办法增加可用内存?
- 这是 Excel
XLL
插件的限制吗?在控制台应用程序中,GlobalMemoryStatusEx
报告大约有 2034 MB 可用虚拟内存。 - 这是
XLW library
的限制吗? - 这是
32-bit Excel
的限制吗?
XLL实际上只是重命名的DLL。如果你有一个 32 位的 Excel,那么整个 Excel 进程就有一个 32 位的虚拟地址 space 可以居住(并且 Windows 保留其中的一半用于OS)。因此,您的进程(XLL 和 Excel 本身)的总容量限制为 2G。
您的选择是:
- 切换到 64 位 Excel(这意味着您的 XLL 需要是 64 位的)
- 让 XLL 保持 32 位,并使其启动一个单独的(可能是 64 位)进程,并在其中进行处理。
后一种选择显然要复杂得多,并且在进程之间复制数据不会那么快 - 但它是一个选项。