RFR: 7885: Graphical rendering of dependency view fails due to heap memory drain [v2]
Virag Purnam
vpurnam at openjdk.org
Thu Aug 24 05:12:32 UTC 2023
On Wed, 23 Aug 2023 19:41:19 GMT, Vincent Alexander Beelte <duke at openjdk.org> wrote:
>> Virag Purnam has updated the pull request incrementally with one additional commit since the last revision:
>>
>> 7885: Graphical rendering of dependency view fails due to heap memory drain
>
> Sure go ahead and adapt that idea however you see fit. I had already gotten approval to contribute that myself from Accenture but I never did because in the end I felt it wasn't enough of an improvement.
> Even with that change I could easily make the JSONs big enough that they won't fit into the Java array size limits. And I did not even need to use abnormally large recordings for that.
> I think fully removing the JSONs is not easily possible but you might want to explore changing the format unless there are consumers outside the scope of what you could change.
> I imagine there might be a lot of duplicate content in those JSONs like maybe stacktraces or class names. You could implement a manual dictionary compression (I believe that's the word for what I am proposing).
> Instead of for example
>
> {
> "people": [
> {
> "firstName": "John",
> "lastName": "Smith"
> },
> {
> "firstName": "Max",
> "lastName": "Miller"
> },
> {
> "firstName": "Max",
> "lastName": "Smith"
> },
> {
> "firstName": "John",
> "lastName": "Miller"
> }
> ]
> }
>
> you could do this
>
> {
> "people": [
> {
> "firstName": 0,
> "lastName": 1
> },
> {
> "firstName": 2,
> "lastName": 3
> },
> {
> "firstName": 2,
> "lastName": 1
> },
> {
> "firstName": 0,
> "lastName": 3
> }
> ],
> "strings": ["John", "Smith", "Max", "Miller"]
> }
>
> In this example the last JSON wasn't actually smaller in terms of characters because the names are too short, but I think I have shown the idea.
Hi @grandmasterpixel, Thanks! Your idea for improvement is really promising. I need to experiment a bit on that and need to check how users other than JMC are consuming. We have several bugs opened for this OutOfMemory and I think the changes proposed by you are good enough to fix this issue (normal scenario) as of now. We will create a new ticket for the enhancement.
-------------
PR Comment: https://git.openjdk.org/jmc/pull/511#issuecomment-1691011682
More information about the jmc-dev
mailing list