相关疑难解决方法(0)

什么是专用字节,虚拟字节,工作集?

我试图使用perfmon Windows实用程序来调试进程中的内存泄漏.

这就是perfmon解释这些术语的方式:

Working Set是此过程的工作集的当前大小(以字节为单位).工作集是过程中线程最近触及的一组内存页面.如果计算机中的可用内存超过阈值,则即使不使用页面,页面也会保留在进程的工作集中.当可用内存低于阈值时,将从工作集中剪裁页面.如果需要它们,它们将在离开主存储器之前被软故障返回工作集.

Virtual Bytes是进程正在使用的虚拟地址空间的当前大小(以字节为单位).使用虚拟地址空间不一定意味着相应地使用磁盘或主存储器页面.虚拟空间是有限的,并且该过程可以限制其加载库的能力.

Private Bytes是此进程分配的内存的当前大小(以字节为单位),无法与其他进程共享.

这些是我的问题:

是否应该测量私有字节,以确定进程是否有任何泄漏,因为它不涉及任何共享库,如果发生任何泄漏,将来自进程本身?

该进程消耗的总内存是多少?它是虚拟字节还是虚拟字节和工作集的总和?

私有字节,工作集和虚拟字节之间是否有任何关系?

还有其他工具可以更好地了解内存使用情况吗?

debugging operating-system memory-leaks memory-management

463
推荐指数
4
解决办法
27万
查看次数

如何在C#中获得CPU使用率?

我想获得C#中应用程序的总CPU使用率.我已经找到了许多方法来深入研究进程的属性,但我只想要进程的CPU使用率,以及你在TaskManager中获得的总CPU.

我怎么做?

c# cpu-usage

191
推荐指数
6
解决办法
26万
查看次数

无法加载计数器名称数据,因为索引无效 - 异常

我正在使用C#和WPF - 操作系统是Windows 7 Professional和Visual Studio 2012,SQL Server 2012.

我在wpf中使用了Devexpress Grid.我想使用ADO.Net Server模式将其绑定到数据库.我选择"项目源向导"选项来执行此绑定,但它生成以下异常:

InvalidOperationException:无法加载计数器名称数据,因为从注册表中读取了无效的索引.

这个例外是什么意思?

你能帮我解决这个问题吗?

谢谢,安妮.

.net c# sql-server-2012

61
推荐指数
3
解决办法
4万
查看次数

如何开始创建多线程负载均衡器?

我有一个有趣的练习可以从我的教授那里解决.但我需要一些帮助,所以在假期期间不会变得无聊.

演习是为了

  • 创建一个多线程负载平衡器,每秒从5个传感器读取1个测量点.(因此每秒5个值).
  • 然后使用这些值进行一些"复杂"计算.
  • 在屏幕上打印计算结果.(如传感器1-5的最大值或平均值等,当然是多线程的)
  • 作为一项额外任务,我还必须确保如果将来例如每秒钟读取500个传感器,计算机就不会退出工作.(负载平衡).

我有一个csv文本文件,包含5个虚拟传感器的约400个测量点.

我认为我必须做的事情:

  1. 将测量点读入阵列
  2. 确保线程安全访问该阵列
  3. 为计算某些数学内容的每个值生成一个新线程
  4. 为最大并发工作线程设置最大值

我是c#中多​​线程应用程序的新手,但我认为使用threadpool是正确的方法.我目前正在编写一个队列,可能在任务中启动它,因此它不会阻止应用程序.

你会推荐什么?

c# multithreading load-balancing

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

监视另一台服务器上进程的内存使用情况

我正在尝试开发一个应用程序,它将从我的PC监视位于服务器上的进程的内存使用情况.我创建了一个应用程序,它将监视位于运行应用程序的同一台PC上的进程的内存使用情况,但无法弄清楚如何从我的PC运行应用程序并监视另一台PC的/服务器进程.

任何帮助都会让我指向正确的道路.

UPDATE

这是我到目前为止:

    private static string sProcName = "PCMain";
    private static string machine = "serverName";
    private static int sProcMemoryInKB = 10000;
    static void Main(string[] args) {
        VerifyRemoteMachineStatus(machine);
        GetMachineName();
        Process ReqProcess;
        GC.GetTotalMemory(true);
        ReqProcess = CurrentlyRunning(sProcName);
        do {
            if (ReqProcess != null) {
                System.Threading.Thread.Sleep(1000);
                // calculate the CPU load
                System.TimeSpan CPULoad = (DateTime.Now - ReqProcess.StartTime);
                Console.WriteLine("CPU Load: " + (ReqProcess.TotalProcessorTime.TotalMilliseconds / CPULoad.TotalMilliseconds) * 100);

                PerformanceCounter WorkingSetMemoryCounter = new PerformanceCounter("Process", "Working Set", sProcName, machine);
                //System.Threading.Thread.Sleep(1000);
                Console.WriteLine("Momory (Working Set) " + (WorkingSetMemoryCounter.NextValue() / …
Run Code Online (Sandbox Code Playgroud)

c# networking network-monitoring

3
推荐指数
1
解决办法
9488
查看次数