相关疑难解决方法(0)

在CLR 4.0中,单个对象的大小仍然限制为2 GB?

据我所知,.NET中的单个实例有2 GB的限制.我没有太多关注,因为到目前为止我主要使用32位操作系统.在32但它或多或少是一个人为的限制.但是,我很惊讶地发现这个限制也适用于64位.NET.

由于诸如List<T>使用数组来存储项目之类的集合,这意味着与在64位上运行的相同应用程序相比,在32位上运行的.NET应用程序将能够在列表中保存两倍的引用类型项.这非常令人惊讶.

有谁知道这个限制是否在CLR 4.0中得到解决(目前我手头没有安装4.0).

.net memory clr4.0

39
推荐指数
3
解决办法
2万
查看次数

在64位Windows上.NET中的数组的最大长度是多少

我从某人那里听说.NET中最大的数组大小是4 GB?只是想知道这是否属实.您不会梦想在32位.NET上执行此操作,但是在具有12 GB RAM的64位系统上,也许您可​​能想要这样做.:-)

.net arrays max

23
推荐指数
2
解决办法
2万
查看次数

尝试接受具有大文件的模型时出现 .net API 错误

我有一个 API 方法,当一个大文件传递给它时,它会接收一个空模型参数。
我创建了一个测试客户端来测试这个端点。测试客户端和 API 都具有相同的模型,并且都使用 .NET 4.5:

public class FilingPostModel
    {
        public string Id { get; set; }
        public string TypeId { get; set; }
        public string FirstName { get; set; }
        public string MiddleName { get; set; }
        public string LastName { get; set; }
        public string Suffix { get; set; }
        public string Line1 { get; set; }
        public string Line2 { get; set; }
        public string City { get; set; }
        public string State { get; …
Run Code Online (Sandbox Code Playgroud)

.net c# json.net c#-4.0 asp.net-web-api

6
推荐指数
1
解决办法
238
查看次数

创建庞大的字典

在我对素数的追求中,我已经问过这样一个问题:无法创建巨大的数组,这些数组导致我基于数组字典创建我自己的假数组类...:private Dictionary<int, Array> arrays = new Dictionary<int, Array>();

我可以10 000 000 000使用下面的代码知道创建很多bool(如)的伪数组:

public class CustomArray
{
    private Dictionary<int, Array> arrays = new Dictionary<int, Array>();

    public CustomArray(ulong lenght)
    {
        int i = 0;
        while (lenght > 0x7FFFFFC7)
        {
            lenght -= 0x7FFFFFC7;
            arrays[i] = new bool[0x7FFFFFC7];
            i++;
        }
        arrays[i] = new bool[lenght];
    }
}
Run Code Online (Sandbox Code Playgroud)

但是一旦我要求CustomArray 100 000 000 000元素,它就崩溃了.它适用于25次首次迭代(我的Dictionary包含25个0x7FFFFFC7元素的数组),但随后它会因OutOfMemory异常而崩溃.

剩下的,我有16GB内存,VS2013,程序是用64位编译的,我启用了gcAllowVeryLargeObjects选项,我在任务管理器中看不到任何内存峰值.


我怎样才能避免这个错误?

c# arrays dictionary

5
推荐指数
1
解决办法
188
查看次数

更快的方式生成随机文本文件C#

输出应该是一个大文本文件,其中每行的格式为Number.String,文本是随机的:

347. Bus
20175. Yes Yes
15. The same
2. Hello world
178. Tree
Run Code Online (Sandbox Code Playgroud)

必须以字节为单位指定文件大小.对以最快的方式生成大约1000MB以上的文件感兴趣.

我的代码用于生成随机文本:

public string[] GetRandomTextWithIndexes(int size)
    {
        var result = new string[size];

        var sw = Stopwatch.StartNew();
        var indexes = Enumerable.Range(0, size).AsParallel().OrderBy(g => GenerateRandomNumber(0, 5)).ToList();
        sw.Stop();
        Console.WriteLine("Queue fill: " + sw.Elapsed);

        sw = Stopwatch.StartNew();
        Parallel.For(0, size, i =>
        {
            var text = GetRandomText(GenerateRandomNumber(1, 20));
            result[i] = $"{indexes[i]}. {text}";
        });

        sw.Stop();
        Console.WriteLine("Text fill: " + sw.Elapsed);

        return result;
    }

public string GetRandomText(int size)
    {
        var builder = new …
Run Code Online (Sandbox Code Playgroud)

c# arrays file generator

0
推荐指数
1
解决办法
498
查看次数

标签 统计

.net ×3

arrays ×3

c# ×3

asp.net-web-api ×1

c#-4.0 ×1

clr4.0 ×1

dictionary ×1

file ×1

generator ×1

json.net ×1

max ×1

memory ×1