示例#1
0
 public MeminfoViewData(ProcessMeminfo meminfo, ProcessEntry process)
 {
     this.Pid           = meminfo.Pid;
     this.processName   = process?.Name ?? "-";
     this.PssTotal      = meminfo.Total.PssTotal;
     this.PssNativeHeap = meminfo.NativeHeap.PssTotal;
     this.PssDalvikHeap = meminfo.DalvikHeap.PssTotal;
     this.UssTotal      = meminfo.Total.PrivateDirty + meminfo.Total.PrivateClean;
     this.UssEGL        = meminfo.EglMtrack.PrivateDirty + meminfo.EglMtrack.PrivateClean;
     this.UssGL         = meminfo.GlMtrack.PrivateDirty + meminfo.GlMtrack.PrivateClean;
 }
示例#2
0
        void UpdateProcessMeminfo()
        {
            var device            = this.sumacon.DeviceManager.ActiveDevice;
            var selectedProcesses = this.GetSelectedProcesses();

            if (device != null && selectedProcesses != null)
            {
                selectedProcesses = selectedProcesses.OrderBy(p => p.Pid).Take(this.kProcessMeminfoMax);
                // 今回なくなったものは消す、増えたものはとりあえず0で出しておく(後ほど値設定)
                var newMeminfoList = selectedProcesses.Select(p => new MeminfoViewData(device.Processes[p.Pid]));
                var removes        = this.meminfoList.Except(newMeminfoList, new MeminfoViewDataEqualityComparer()).ToArray();
                foreach (var m in removes)
                {
                    this.meminfoList.Remove(m);
                }
                var adds = newMeminfoList.Except(this.meminfoList, new MeminfoViewDataEqualityComparer()).ToArray();
                foreach (var m in adds)
                {
                    this.meminfoList.Add(new MeminfoViewData(device.Processes[m.Pid]));
                }

                foreach (var p in selectedProcesses)
                {
                    ProcessMeminfo.GetAsync(device, p, meminfo =>
                    {
                        this.SafeInvoke(() =>
                        {
                            // あれば上書き、もうなくなってたら何もしない
                            var viewData = new MeminfoViewData(meminfo, device.Processes[meminfo.Pid]);
                            for (int i = 0; i < this.meminfoList.Count; i++)
                            {
                                if (this.meminfoList[i].Pid == meminfo.Pid)
                                {
                                    this.meminfoList[i] = viewData;
                                    return;
                                }
                            }
                        });
                    });
                }
            }
            else
            {
                this.meminfoList.Clear();
            }
        }