我正在开发一个GXT应用程序,它在IE1064位(因为32位IE耗尽了可寻址内存)中有一个栈外空间错误,同时试图在树控件中显示一个非常大的数据集。这不是堆栈溢出,而是达到内存限制,而不是递归限制。我研究了多种选择(包括从根本上重新设计应用程序),但是内存的使用大多超出了我们的控制范围,而且我也没有得到更好的解决方案的支持。
因此,虽然我们做了一些根本错误的不可避免的建议是被赞赏、承认和欢迎的,但我想主要问一下,是否有一个IE注册表条目可以被调整以增加我似乎遇到的人为堆栈空间限制。请注意,我的系统有足够的RAM;我遇到了软件限制。
发布于 2013-08-19 22:15:34
新线程的默认堆栈大小嵌入到.exe文件中(参见下面转储输出中的“堆栈大小”字段)。在创建线程时,应用程序可以指定自定义堆栈大小,但大多数应用程序只使用编译时指定的默认值。
>link.exe /dump /headers "c:\Program Files\Internet Explorer\iexplore.exe"
Microsoft (R) COFF/PE Dumper Version 11.00.50727.1 Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file c:\Program Files\Internet Explorer\iexplore.exe
PE signature found
File Type: EXECUTABLE IMAGE
...
OPTIONAL HEADER VALUES
20B magic # (PE32+)
10.00 linker version
4A00 size of code
B1C00 size of initialized data
0 size of uninitialized data
2CE8 entry point (0000000000402CE8) wWinMainCRTStartup
1000 base of code
400000 image base (0000000000400000 to 00000000004BAFFF)
1000 section alignment
200 file alignment
6.01 operating system version
6.01 image version
6.00 subsystem version
0 Win32 version
BB000 size of image
400 size of headers
C16C7 checksum
2 subsystem (Windows GUI)
8140 DLL characteristics
Dynamic base
NX compatible
Terminal Server Aware
100000 size of stack reserve
E000 size of stack commit
可以编辑这些内容,但您必须复制整个目录以避免某些安全限制。使用visual studio工具集,这将使堆栈大小加倍:
供参考,PE文件格式规范可以下载这里。
https://stackoverflow.com/questions/18323055
复制相似问题