我目前正在支持一个在多台服务器上运行的 VB6 应用程序(我们正在替换该应用程序,但这是一个缓慢的过程!)。谁能告诉我VB6进程可以寻址的最大内存量是多少?我们正在使用多种操作系统:
- Windows Server 2003 32位
- Windows Server 2008 64位
- Windows Server 2008 R2 64 位
我尝试过使用这样的资源:https://blogs.msdn.microsoft.com/tom/2008/04/10/chat-question-memory-limits-for-32-bit-and-64-bit-processes/ https://blogs.msdn.microsoft.com/tom/2008/04/10/chat-question-memory-limits-for-32-bit-and-64-bit-processes/
但我怀疑这是否准确,因为它讨论的是基于 .NET 的应用程序,但我找不到比这更重要的内容。
很难认真对待这些“如果超人与上帝打架怎么办”的问题。早在这成为一个问题之前,您就应该从内存驻留数据结构转移到磁盘文件或数据库。
但即使不与 /LARGEADDRESSAWARE 链接并启动到 3GB 模式,VB6 程序也可以在 32 位 Windows 上处理相当多的数据。
Option Explicit
Private Sub Main()
Const MAX_BYTES As Long = &H63700000
Dim Bytes() As Byte
ReDim Bytes(MAX_BYTES)
Bytes(MAX_BYTES) = 255
MsgBox "Success" & vbNewLine & vbNewLine _
& "Bytes(MAX_BYTES) = " & CStr(Bytes(MAX_BYTES)) & vbNewLine & vbNewLine _
& "MAX_BYTES = " & Format$(MAX_BYTES, "#,##0")
End Sub
Result:
Success
Bytes(MAX_BYTES) = 255
MAX_BYTES = 1,668,284,416
链接的博客文章正确地指出了 .Net 进程的局限性以及它们无法应对使用大量数据的情况。像 .Net 这样的脚本引擎并不是为这些事情而构建的,并且不要低估巨大的库的开销,即使是最简单的 .Net 程序也会拖入其地址空间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)