www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Realtime monitoring of GC

In the Java world, the JVM offers hooks to allow tools to monitor 
in real time what is happening under the hood of your application.

I think this sort of tooling would be very useful in D. 
Especially in my current Game Dev project (it'd be really nice to 
see in real time where you're allocating).

I've had a quick look, and the current -profile=gc code should be 
pretty adaptable.
We'd just have to make available a public 'getter' of the current 
accumulated stats in profilegc.d [1].

I'm no compiler programmer, so:
1) I'm here looking for advice on whether this is even the 
correct way to go about it?

2) What would be the best way to make it available to the end 
user?
      Through a function call in core.runtime?
      Or maybe a compiler switch that prints to a file every X 
seconds?

My current (hacky) attempt is here [2]:

It copy/paste from other code, and would need cleaning up. But, 
it's a proof of concept at least.

I provide access to user code through a function in core.runtime;
It's in use in sample code here: [3]

Thanks!
Colin

[1] 
https://github.com/dlang/druntime/blob/master/src/rt/profilegc.d
[2] 
https://github.com/grogancolin/druntime/tree/realtimeGCMonitoring
[3] 
https://gist.github.com/grogancolin/a96a33f3b6d36c820e63982ced116eca
Aug 26 2016