php-meminfo icon indicating copy to clipboard operation
php-meminfo copied to clipboard

Diff two JSON files

Open WyriHaximus opened this issue 6 years ago • 5 comments

Attempting to hunt down a memory leak using the following code:

meminfo_dump(fopen('before.json', 'w'));
echo gc_collect_cycles();
meminfo_dump(fopen('after.json', 'w'));

Now I can't easily compare those two files. A diff command would be a great addition to see what has changed.

WyriHaximus avatar Dec 17 '18 20:12 WyriHaximus

If you have a difference between the 2 files, then there's a bug in phpMeminfo or a bug in the Zen engine.

When you cal gc_collect_cycles(), it triggers the circular collection sooner. But in all cases, the circular collection would have collected the cycles without references.

And as phpMeminfo is built to provide information on memory leak, that is items that have still reference so they cannot be cleaned up from memory, it doesn't make much sense to list items that will be collected and cleanup automatically by the Zend engine.

So there should not be any difference between the two files.

BitOne avatar May 03 '19 07:05 BitOne

Maybe if you tell me what you want to know exactly, we could find a real solution for you case ?

BitOne avatar May 03 '19 07:05 BitOne

When you cal gc_collect_cycles(), it triggers the circular collection sooner. But in all cases, the circular collection would have collected the cycles without references.

Yeah so I've learned since opening this issue.

And as phpMeminfo is built to provide information on memory leak, that is items that have still reference so they cannot be cleaned up from memory, it doesn't make much sense to list items that will be collected and cleanup automatically by the Zend engine.

So there should not be any difference between the two files.

To find a memory leak I want to see the differences between two or more files. See the exact differences and what items are new or removed between files.

WyriHaximus avatar May 06 '19 20:05 WyriHaximus

Hey @WyriHaximus ,

Thanks for your answer!

When I need to do that, I usually used the summary analyzer and the diff command to see which kind of objects leaked the most. But it's maybe not precise enough for your use case.

As we are using JSON files, maybe you can try some generic JSON tools, like jd: https://github.com/josephburnett/jd#command-line-usage

It's capable of diffing two different json files.

Don't hesitate to share your experience with it, it may help others, and we could add a section in the documentation about it, if it's worth it.

BitOne avatar May 07 '19 08:05 BitOne

That is a good one. Haven't thought of that :+1: , will give it a try and report back

WyriHaximus avatar May 07 '19 15:05 WyriHaximus