- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 Invantive Control(带有 Microsoft .NET 4.7 的 VSTO 加载项)的复杂查询从 Exact Online 检索大约 200.000 行。这在 64 位版本的 Microsoft Excel 2010 及更高版本中运行良好。
在查询结束时进行强制 .NET 垃圾回收后,报告大约有 250 MB 的内存正在使用中。在此过程中,使用的内存有所不同,但峰值为 750 MB。
但是,在 32 位版本上,用户在下载数据期间经常会遇到 OutOfMemory 异常。即使在重构查询以尽早删除未使用的列和行之后,它仍然不适合可用内存。
如何在 Excel 32 位版本中运行如此复杂的查询?
最佳答案
尽管至少从 Excel 2007 起就有了 64 位版本的 Excel,但主要的安装仍然是 32 位版本的 Microsoft Excel。
大多数外接程序开发人员从未找到支持 64 位 Microsoft Office 的业务案例,并且在 2010 年左右,Microsoft 将其使用 64 位版本 Office 的建议更改为 32 位版本。
VSTO 加载项的可用内存因版本而异,但随着 Excel 本身复杂性的增加而不断减少。
目前,在加载了 Excel 和 .NET CLR 的情况下,可寻址内存空间为 1.75 GB,您最多可以为 .NET 代码和数据使用大约 250-300 MB 的空间。垃圾收集器在将所有内容放入可寻址内存空间方面做得很好,但这通常是不够的。
使用 64 位 Windows 版本(现在的常见版本)并向 Windows 添加更多物理或虚拟内存通常不会改善可用和可寻址内存量。这是 32 位地址空间设计的限制。
从 2016 年 5 月的版本开始,Microsoft 已设置 LARGEADDRESSAWARE Excel.exe header 中的位。这使得 32 位版本的 Excel 就像旧的 32 位版本的 Oracle 和其他版本一样,可以寻址超过 2 GB 的内存。
knowledge base进一步记录了哪些版本提供了此功能。鉴于 Excel 2013 已停产,本质上您应该使用新版本的 32 位 Excel 2016 以避免出现 OutOfMemory 异常。
对于 Office365 订阅者,建议切换到包含足够新版本的 Excel 2016 的 channel 。
虽然对于 Excel,这会将可寻址内存空间增加到仅 3 GB,但它会将 .NET 代码和 VSTO 数据的可用内存量从 250-300 MB 增加到 1250-1300 MB。可用内存空间惊人地增加了 4-5 倍。
Invantive Control 在帮助 -> 诊断窗口中显示可寻址内存空间。
对于非 LARGEADDRESSAWARE 版本的 Excel,它显示:
但对于 LARGEADDRESSAWARE 版本,它显示:
分配超过 2 GB 的操作:
关于.net - itgenclr007 : Fix OutOfMemory in 32-bit Excel with VSTO add-in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46767998/
我正在调查我们的应用程序运行缓慢的问题,最终导致集群环境中的一个实例出现故障。几周前我遇到了以下错误: [#|2012-05-11T14:12:03.460-0400|SEVERE|sun-appse
我创建了一个应用程序,基本上使用机器人在客户端获取图像并每隔几秒发送一次到服务器,这样我就可以看到另一台 PC 上发生了什么。问题似乎是它一直将图像保存在数组或其他东西中,因为几秒钟后,它崩溃了。我只
我正在使用 universal-image-loader-1.6.2.jar(最新的)。我正在尝试使用此库下载并缓存该图像。我要从服务器下载 47 张图片,总共 5.22 Mb。我的最大图片尺寸为 7
我在玩 Scala 的惰性迭代器,但遇到了一个问题。我想要做的是读取一个大文件,进行转换,然后写出结果: object FileProcessor { def main(args: Array[S
当涉及到服务器环境的垃圾收集/内存限制时,.Net 框架的行为是否可能有所不同?我在具有 32gbs 物理内存的 64 位服务器计算机上显式运行 x86 编译的应用程序,并且内存不足(SystemOu
在我的应用程序启动时,我正在创建具有 75*10^6 容量的长哈希集。 Profiler 显示,该应用程序使用 1.4g。我尝试设置-Xmx1600m,但发现内存不足。 -Xmx2000m 相同。 -
我有一项关于使用数字列表构建金字塔的任务,但一项测试存在一个问题。在我的任务中,我需要对列表进行排序。我使用 Collections.sort(): Collections.sort(inputNum
在对我为 Windows Mobile 编写的类库进行一些最终测试时(使用 Compact Net Framework 2.0),我遇到了 OOM 异常。 基本上,我的库首先加载一个字典文件(一个带有
编辑:我将其重新表述为问题并将答案移至答案部分... 在一个相对复杂的多线程 .NET 应用程序中,我遇到了 OutOfMemoryException,即使在我认为没有理由的情况下也是如此。 情况:
当我尝试使用下面的方法将一些文本内容设置到我们心爱的窗口的剪贴板时 片段,它在 10-15MB 的范围内工作正常。但是超过这个大小,它会抛出一条错误消息 显示在最后。我们如何将 30+ MB 的 ut
我想在 Android 中将 PDF 图像发送到服务器。 服务器规范需要我应该使用 Base64 编码。 所以我应该将 PDF 图像文件转换为 Base64 字符串。 下面是 HTTP POST 请求
我正在解析设备上的二进制文件并将我关心的字段存储在数组中。这些文件可以生成大小为 100,000 的数组。自然地,java 告诉我内存不足(我认为 android 每个应用程序只允许 16MB)。 还
我正在尝试从一个 txt 文件(书籍)中读取,然后将它的每一行添加到一个链表中。但是,当我运行代码时,我在 l.add(line); 处遇到内存不足错误。你能告诉我这段代码做错了什么吗?或者,是否有更
我通过允许用户选择要显示的图片从 SD 卡加载位图。创建位图后,我在 ImageView 中设置位图: mBitmap = Bitmap.createBitmap(Media.getBitmap(th
我试图在 gridview 中显示很多图像。有两个 Activity 。它们都有 gridviews,其中有图像。当我只启动其中一个时。没有问题,但是当我启动另一个时,存在“outifmemory”问
我需要在我的应用程序中显示许多图像。这些是 jpg 和 png,我将它们加载到 ImageView 中,如下所示: tile.setImageResource(R.drawable.tile_high
我正在开发一个远程备份应用程序,有时我需要上传大文件,例如 15 MB,我在一些手机上测试过我遇到内存不足的错误 有没有办法使用这个函数来使用更少的内存? public int uploadFile(
我在模拟器和设备(acer 平板电脑和三星 galaxy)上运行我的项目时出现 OutOfMemory 异常,显示 the application launcher process com.andro
我有一个程序可以为目录(子)树中的每个文件创建一个对象。在磁盘越来越大的今天,没有办法知道会有多少文件,尤其是。不是几年(几个月?)从现在开始。 我的程序不是企业关键的;它是用户分析该子树的工具。所以
我已经使用以下命令从命令行启动了我的jar java -Xms1200m -Xmx1500m -jar xxx.jar 我正在创建大小为 12600 * 12600 的 BufferedImage 意
我是一名优秀的程序员,十分优秀!