小编use*_*808的帖子

.NET生成0堆大小

是否可以在.NET中设置第0代堆的最小大小?

我有一个下面的sistuation.我有一个函数,分配大约20-30 MB的1KB对象,对它们做一些事情,然后终止,让所有分配的对象都被GC编辑.现在,在性能监视器中,我可以看到第0代堆大小是5-6 MB,这还不足以接受我需要的所有20-30 MB的对象.当我开始分配时,gen0 GC开始运行,并且因为需要所有对象,所以它们将它们提升为gen1.GC下次开始运行时,这些对象将在gen2中升级.所以最终大约15MB的对象最终进入gen2堆.根据我的逻辑,这些是临时对象,绝不应该在gen2堆中结束.我相信问题在于gen0堆大小的大小.但我不确定.我知道在Java中有可能设置最小的代数堆.在.NET中有这样的方式吗?

.net garbage-collection

15
推荐指数
2
解决办法
9337
查看次数

ILGenerator方法内联

给出以下代码:

using System;
using System.Reflection.Emit;
using System.Diagnostics;
using System.Reflection;

namespace ConsoleApplication1
{
    class A
    {
        public int Do(int n)
        {
            return n;
        }
    }

    public delegate int DoDelegate();

    class Program
    {
        public static void Main(string[] args)
        {
            A a = new A();

            Stopwatch stopwatch = Stopwatch.StartNew();
            int s = 0;
            for (int i = 0; i < 100000000; i++)
            {
                s += a.Do(i);
            }

            Console.WriteLine(stopwatch.ElapsedMilliseconds);
            Console.WriteLine(s);


            DynamicMethod dm = new DynamicMethod("Echo", typeof(int), new Type[] { typeof(int) }, true);
            ILGenerator il …
Run Code Online (Sandbox Code Playgroud)

.net methods cil inline ilgenerator

7
推荐指数
1
解决办法
1151
查看次数

标签 统计

.net ×2

cil ×1

garbage-collection ×1

ilgenerator ×1

inline ×1

methods ×1