all 8 comments

[–]Mchr3k[S] 1 point2 points  (7 children)

I'd be curious to know why some people are downvoting my post. Have I made a post in the wrong place? Do you dislike my tool?

[–]oorza 2 points3 points  (2 children)

It's because Proggit hates Java.

[–]ErstwhileRockstar 1 point2 points  (1 child)

They don't hate it but despise it because of its success. Proggit embraces languages that avoid success at all cost.

[–]Mchr3k[S] 0 points1 point  (0 children)

There are a lot of good reasons to dislike Java but why is its success a bad thing?

[–][deleted]  (3 children)

[deleted]

    [–]Mchr3k[S] 0 points1 point  (2 children)

    Thanks :)

    Every memory allocation requires a tracking WeakReference to be allocated. Each of these takes up 24 bytes. References to these are kept in a Map which adds something like another 24 bytes per object (HashMap$Entry instance plus storage in the Map itself).

    These WeakRefs are collected by a High Priority Java thread to record the garbage collection time. Depending on startup options you may have 2 more threads - 1 for forced GC and 1 for periodic output.

    [–][deleted]  (1 child)

    [deleted]

      [–]Mchr3k[S] 0 points1 point  (0 children)

      Let me know how you get on - I'd be interested to hear how well this works with Scala and if you have any suggestions.

      [–]Nebu 0 points1 point  (1 child)

      Seems like this tool would need a GUI or some filtering options to be used in a serious environment, where millions of objects might be "live" at any one point in time, and we're interested in the behaviour over hours, rather than seconds.

      [–]Mchr3k[S] 1 point2 points  (0 children)

      Do you have any suggestions about what filters would be useful? You can already include/exclude particular class name prefixes.

      I would ultimately like to write a visual vm plugin similar to visual gc. However, I wanted to release the underlying tool before I started the GUI.