Vb.net 多维数组的极限
我刚刚制作了一个1024x1024的多维数组。我得到一个Vb.net 多维数组的极限,vb.net,multidimensional-array,size,Vb.net,Multidimensional Array,Size,我刚刚制作了一个1024x1024的多维数组。我得到一个OutOfMemory异常。安全使用的最大尺寸多维数组是什么?我在VB.net中这样做,所以所有的.net答案都是可以接受的 编辑 当我说安全的时候,我的意思是,一个适合任何电脑的尺寸。在32位操作系统上,什么尺寸的操作系统可以顺利运行。我没有意识到1024码是4G。我希望能得到16分之一。好吧,1024*1024*1024是一个非常大的数字。假设您使用的是一个整数数组,那么这对应于4gib的内存,不包括管理多个数组的开销 由于没有进程可以
OutOfMemory
异常。安全使用的最大尺寸多维数组是什么?我在VB.net中这样做,所以所有的.net答案都是可以接受的
编辑
当我说安全的时候,我的意思是,一个适合任何电脑的尺寸。在32位操作系统上,什么尺寸的操作系统可以顺利运行。我没有意识到1024码是4G。我希望能得到16分之一。好吧,1024*1024*1024是一个非常大的数字。假设您使用的是一个整数数组,那么这对应于4gib的内存,不包括管理多个数组的开销
由于没有进程可以分配超过2 GiB的内存,因此您已经超过了操作系统(不是VB或.NET!)施加的硬限制。NET本身在这里没有真正的限制,因为机器的速度要快得多。嗯,1024*1024*1024是一个非常大的数字。假设您使用的是一个整数数组,那么这对应于4gib的内存,不包括管理多个数组的开销
由于没有进程可以分配超过2 GiB的内存,因此您已经超过了操作系统(不是VB或.NET!)施加的硬限制。NET本身在这里没有真正的限制,因为机器的速度要快得多。如果没有至少两个其他细节,这个问题毫无意义:
- 计算机上的可用内存
- 每个内存的大小
得到那些数字,然后做数学题。假设未绑定的32位整数,1024*1024*1024数组将消耗大约4 GB(实际上,.NET数组不是C数组,有一些开销;我对它们的实现了解不够,无法估计开销有多大)。如果您想将程序的使用限制在内存量巨大(超过4GB,至少因为您的程序不是唯一一个正在运行)的64位计算机上,那么您可以使用这样的阵列。很可能您打算在其上运行程序的计算机没有那么强大。然后,你必须计算出你想要/需要支持的最小内存,并做一些数学计算,以估计你可以舒适地消耗多少内存。如果没有至少两个其他细节,这个问题毫无意义:
- 计算机上的可用内存
- 每个内存的大小
得到那些数字,然后做数学题。假设未绑定的32位整数,1024*1024*1024数组将消耗大约4 GB(实际上,.NET数组不是C数组,有一些开销;我对它们的实现了解不够,无法估计开销有多大)。如果您想将程序的使用限制在内存量巨大(超过4GB,至少因为您的程序不是唯一一个正在运行)的64位计算机上,那么您可以使用这样的阵列。很可能您打算在其上运行程序的计算机没有那么强大。然后,你必须计算出你想要/需要支持的最小值,并做一些数学计算来估计你可以轻松地消耗多少内存。.NET对象不能大于2G字节。即使如此,在32位操作系统上,也不太可能在可寻址虚拟内存空间中找到足以容纳如此大阵列的漏洞。您可以在程序启动后立即获得大约600兆字节,在地址空间开始碎片化后,从那里快速下降。在仍有半个gig可用空间的情况下,轰炸90MB的分配并不罕见
您需要使用和64位操作系统。如果你真的需要这样一个庞大的阵列,还需要一点内省。在System.Collections.Generic可用之后,数组有点过时了。集合类的速度与数组一样快,只允许您为实际使用的内容付费。推荐使用。.NET对象不能大于2 GB。即使如此,在32位操作系统上,也不太可能在可寻址虚拟内存空间中找到足以容纳如此大阵列的漏洞。您可以在程序启动后立即获得大约600兆字节,在地址空间开始碎片化后,从那里快速下降。在仍有半个gig可用空间的情况下,轰炸90MB的分配并不罕见
您需要使用和64位操作系统。如果你真的需要这样一个庞大的阵列,还需要一点内省。在System.Collections.Generic可用之后,数组有点过时了。集合类的速度与数组一样快,只允许您为实际使用的内容付费。推荐。我要去签出
System.Collections.Generic
now:)我要去签出System.Collections.Generic
now:)