好的,我正在尝试,我想知道一些事情。 首先,我将代码粘贴到我的基础对象类。所以你明白了。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace P_Object
{
class base_object
{
string pronoun_name;
string noun_name;
string internal_name;
string internal_id;
Dictionary<string, string> relations = new Dictionary<string, string>();
}
}
这是崩溃的原因。
在另一个课程中,作为其定义的一部分,我有:
private base_object[] objects1=new base_object[99999999];
private base_object[] objects2 = new base_object[99999999];
private base_object[] objects3 = new base_object[99999999];
private base_object[] objects4 = new base_object[99999999];
private base_object[] objects5 = new base_object[99999999];
private base_object[] objects6 = new base_object[99999999];
private base_object[] objects7 = new base_object[99999999];
private base_object[] objects8 = new base_object[99999999];
private base_object[] objects9 = new base_object[99999999];
private base_object[] objects10 = new base_object[99999999];
private base_object[] objects11 = new base_object[99999999];
private base_object[] objects12 = new base_object[99999999];
private base_object[] objects13 = new base_object[99999999];
private base_object[] objects14 = new base_object[99999999];
private base_object[] objects15 = new base_object[99999999];
private base_object[] objects16 = new base_object[99999999];
private base_object[] objects17 = new base_object[99999999];
private base_object[] objects18 = new base_object[99999999];
private base_object[] objects19 = new base_object[99999999];
private base_object[] objects20 = new base_object[99999999];
private base_object[] objects21 = new base_object[99999999];
private base_object[] objects22 = new base_object[99999999];
private base_object[] objects23 = new base_object[99999999];
private base_object[] objects24 = new base_object[99999999];
private base_object[] objects25 = new base_object[99999999];
我的主要目标是测试C#在崩溃之前能够在多大程度上解决我必须使用的阵列内存...我能想到的崩溃的唯一原因是我&# 39;某种程度上已经没有记忆了? :/
答案 0 :(得分:0)
可能存在编译器强制限制,但是在内存使用方面可以推送c#的程度取决于您的硬件。更多的内存允许更多的阵列等。基于这个问题,很难更具体。
答案 1 :(得分:0)
为什么这对你很重要?你究竟想在这里验证什么?
所有平台的内存容量都有限。看看你的代码,我无法想象你需要一次将很多东西放在堆栈上的单一场景。
基本上,对于每个对象数组,您在内存中保留了99999999个空指针。在64位目标中,每个阵列保留99999999 * 8字节的内存。这是799,999,992所以几乎每个对象的演出。然后你做了25次,所以799,999,992 * 25 = 19,999,999,800 19.9 Gig ....在一个可能有4到16 gig ram的系统上。
当然它崩溃了。
我说空指针,因为你初始化数组,但你永远不会存储任何索引。在定义数组时,C#不会为您实例化对象base_object。每个数组元素最终都会指向您创建对象的地址。因此,在它们当前状态下,它们只是空指针,没有初始化base_object。