【问题标题】:.NET: Random number or number of free bytes in memory?.NET:内存中的随机数或空闲字节数?
【发布时间】:2023-04-03 05:32:01
【问题描述】:

如何在 .NET 中获取内存中可用的空闲字节数?

另外,除了new Random().Next()DateTime.Now.Ticks 或可用系统内存之外,您还能想出一个更好的随机数吗?

【问题讨论】:

    标签: c# .net memory random


    【解决方案1】:

    这可能更适合作为 2 个问题...

    Re new Random().Next() - 这显然会死在一个紧密的循环中,所以 现有的 random.Next() 会更加随机;-p 但是你也许想要一个密码随机 - 类似:

        var random = new RNGCryptoServiceProvider();
        byte[] bytes = new byte[4];
        random.GetBytes(bytes);
        int i = BitConverter.ToInt32(bytes, 0);
    

    请注意,这会使测试变得更加困难,因为它不能被播种等等......

    【讨论】:

      【解决方案2】:

      当这里有一个非常好的轮子时,为什么要重新发明轮子:Random.org

      RANDOM.ORG 提供真正的随机数 给互联网上的任何人。这 随机性来自大气 噪音,这对于许多目的是 优于伪随机数 计算机中常用的算法 程式。人们使用 RANDOM.ORG 拿着图纸、彩票和 抽奖,推动游戏和 赌博网站,用于科学 应用程序以及艺术和音乐。

      免责声明:我与本网站没有任何关联,也不能保证他们提供的内容的质量。我个人认为这是一个很酷的想法。

      【讨论】:

        【解决方案3】:

        关于内存指标的问题,请考虑使用性能计数器。

        using System.Diagnostics;
        ...
        PerformanceCounter counter = new PerformanceCounter("Memory", "Available Bytes");
        long freeBytes = counter.RawValue;
        

        您最终可能需要使用不同的计数器,例如“Memory\Free & Zero Page List Bytes”来获得您想要的。我建议在 perfmon 中试验性能计数器。

        【讨论】:

          猜你喜欢
          • 2015-08-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-18
          • 2018-06-06
          • 2019-06-06
          • 1970-01-01
          • 2018-08-21
          相关资源
          最近更新 更多