Code Monkey home page Code Monkey logo

memoscope.net's Introduction

MemoScope.Net Build Code Climate Issue CountDownload

Memoscope.Net Logo Dump and analyze .Net applications memory

Wiki

Please, read the wiki to know everything about MemoScope. Lot of pictures, animated gifs and some text for every major features.

TLDR

What it MemoScope.Net ?

It's a tool to analyze .Net process memory: it can dump an application's memory in a file and read it later. The dump file contains all data (objects) and threads (state, stack, call stack)

MemoScope.Net will analyze the data and help you to find memory leaks and deadlocks

Thanks to Lee Culver for his ClrMd library, without it, MemoScope.Net would not exist.

Install

Get binaries from AppVeyor: x86 x64

Use cases

Out of Memory

I know, with 64 bits apps it should not be an issue but computers only have a few a few Go so it may still happen if your application :

  • is using too much memory (peak)
  • runs for days and has a "slow" memory leak

Dead lock

If your application is locked and you want to know where and why: dump the memory, display the threads status and blocking objects to see what thread is holding one that is waited by another thread.

Hard to reproduce bug

Sometimes, users can do weird things with your application and you can't make it happen on your computer so ask the user to dump its application's memory to analyze it on your machine.

Features

Heap statistics

Query instances

Instances content and references

Compare dumps

Threads, Stacks

Deadlocks

Delegates

Dump process memory

Dump Process Memory

memoscope.net's People

Contributors

fremag avatar mscrivo avatar phillduffy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

memoscope.net's Issues

[Heap] Type names alias

Some names are too long: "System.Long" could be displayed as "long" for instance.

=> should handle generics
System.Collections.Generic.Dictionary<System.String,System.Boolean>
should be displayed :
Dictionnary< string, bool>
nb: note the space after < and before >

=> user can configure the type he wants to alias in settings
=> user can select a color too to spot types easily
=> of course, all future module displaying types should profit form this feature

Cache: store instance references

In a sqlite db, cache the address of instances referencing another instances
=> will slow down first dump load
=> will use some disk space
=> will speed up analysis

MemoscopeApi: make a small api to include in another application so it can send some dump request

So user can decide when and where his application should be dumped.

[ServiceContract]
public interface IMemoscopeService
{
    [OperationContract]
    void  DumpMe();
}


public class MemoScopeProxy : ClientBase<IMemoscopeService>
{
    public ServiceProxy()
        : base(new ServiceEndpoint(ContractDescription.GetContract(typeof(IMemoscopeService)),
            new NetNamedPipeBinding(), new EndpointAddress("net.pipe://localhost/memoscope/"+processId)))
    {

    }
    public void InvokeDumpMe()
    {
        Channel.DumpMe();
    }
}

var serviceHost = new ServiceHost
        (typeof(Service), new Uri[] { new Uri("net.pipe://localhost/memoscope"+processId) });
    serviceHost.AddServiceEndpoint(typeof(IMemoscopeService), new NetNamedPipeBinding(), "memoscopeservice");
    serviceHost.Open();

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.