Memory VB6内存限制

Memory VB6内存限制,memory,vb6,Memory,Vb6,我目前正在支持一个运行在多台服务器上的VB6应用程序(我们正在替换它,但这是一个缓慢的过程!)。谁能告诉我VB6进程Can地址的最大内存量是多少?我们使用多种操作系统: Windows Server 2003 32位 Windows Server 2008 64位 Windows Server 2008 R2 64位 我尝试过使用这样的资源: 但我怀疑这是否准确,因为它讨论的是基于.NET的应用程序,但我找不到比这更重要的问题。很难把这些“如果超人与上帝搏斗会怎么样”的问题看得太重。早在这

我目前正在支持一个运行在多台服务器上的VB6应用程序(我们正在替换它,但这是一个缓慢的过程!)。谁能告诉我VB6进程Can地址的最大内存量是多少?我们使用多种操作系统:

  • Windows Server 2003 32位
  • Windows Server 2008 64位
  • Windows Server 2008 R2 64位
我尝试过使用这样的资源:

但我怀疑这是否准确,因为它讨论的是基于.NET的应用程序,但我找不到比这更重要的问题。

很难把这些“如果超人与上帝搏斗会怎么样”的问题看得太重。早在这成为一个问题之前,您就应该从内存驻留数据结构转移到磁盘文件或数据库

但是,即使不与/LargeAddressware链接并引导到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
结果:

Success

Bytes(MAX_BYTES) = 255

MAX_BYTES = 1,668,284,416

链接的博客文章正确地指出了.Net进程的局限性以及它们无法处理大量数据。像.Net这样的脚本引擎并不是为这些东西而构建的,不要低估巨大的库的开销,即使是最简单的.Net程序也会拖入它的地址空间。

@puropoix:虽然你的链接很棒(谢谢),但我在那里没有找到32位进程2GB的答案。这个2GB限制(从未测试过3GB开关)适用于32位应用程序(VB6是32位),即使操作系统可以处理更多有趣的问题(正如您从64位操作系统知道的)。为什么不写一个函数来确认呢?@VanquishedWombat我甚至没有VB6 IDE。这不是一个我们有源代码的应用程序。我正在管理应用程序的输入。@Paul抱歉没有从您的描述中了解到这一点。我怀疑应用程序没有正确释放内存。这不是一个假设的问题,而是一个实际的问题,我正在与一家已倒闭的供应商合作开发一款应用程序。