.NET 查看其他应用程序的内存
.NET View Other Application's Memory
所以我有两个应用程序一起工作。一个是使用自定义内存管理器用本机 c++ 编写的。此内存管理器管理从开始地址到开始地址 + 大小的连续字节块。我还有一个WPF应用程序,它可以读取文本文件(只是内存管理器中倒入文本文件的字节)并显示有关它的各种统计信息。我想知道是否有一种方法可以在 WPF 应用程序中实时查看本机 c++ 应用程序的内存。所以一些伪逻辑可能是:
- 本机应用程序可能会以某种方式公开池的开始地址和大小
- WPF 应用程序通过起始地址加上大小获取该起始地址的所有字节
我已经在 .NET 中探索了 Process 类,但我没有看到类似 MemoryPool 的内容,我认为该对象的 StartAddress 指向应用程序的最开始,而不是所做的第一个堆分配。
这里的任何帮助将不胜感激!
Damien_The_Unbeliever在
评论中发布了不可避免的最佳解决方案。我很抱歉没有早点发布这个,以防其他人遇到这个问题。这个想法是使用内存映射文件使内存块在应用程序外部可见。本质上,您创建一个内存块并为其指定字符串名称(标识符)。知道此标识符的任何其他应用程序都可以读取该内存块,就好像它是他们自己的一样(假设他们使用内存映射文件来查看内存,因为它不仅仅是本质上可见的)。需要注意的是,读取内存的应用程序必须能够解析内存并理解它。
我使用它在 C# 中为我的引擎创建实时内存查看器。该引擎具有基础分配器和内存管理器,它现在写入内存块,该内存块也由内存映射文件指向。C# 应用程序按给定间隔读取此内存,并以相关方式向用户(开发人员)显示该内存。最好的部分是,由于本机端根本不需要更改即可使用此实现,因此这根本不影响应用程序的性能。
相关文章:
- 可视化 使用 VS Code 查找C++应用程序中的内存泄漏
- 应用程序内存使用量减少
- 在C++应用程序中使用 Tensorflow:如何释放 GPU 内存
- 任务管理器 - C/C++ 应用程序 - 分配的地址空间与已用内存
- OpenGL GLFW 应用程序 - 客户端内存限制
- 使用没有堆内存分配的接口的框架应用程序?
- 我们如何访问 Node.js 应用程序之外的内存?
- 使用 IPC 共享内存的应用程序是否可以访问彼此的代码?
- 使用 valgrind 的地块测量 c++ 应用程序的最大内存使用量(堆栈和堆)
- 为什么Linux报告了我的应用程序的内存使用情况
- 是否可以锁定应用程序中常见控件使用的内存?
- 如何以编程方式获取应用程序的内存使用情况
- 32 位应用程序内存不足
- CRT 检测到应用程序在堆缓冲区(新建/删除)类结束后写入内存
- Android OpenCV 应用程序的内存问题
- 将 python 嵌入我的应用程序时内存泄漏
- C++应用程序如何使用比 RSS 内存更多的堆
- C++应用程序中的静态数据内存限制
- Windows 32 位 mfc 应用程序的虚拟内存中的地址
- 无限分配内存应用程序崩溃