We have a GWT module in our project. Recently there was a major memory overload, and one of the things was a 120MB object stored in StackTraceDeobfuscator.java
ConcurrentHashMap<String, HashMap<String, String>> symbolMaps field. What is it and what is it for?
At the moment of "the overload", out of 16 segments the map contained, 1st was 59MB, 2nd was 30MB and the 3rd was 29.9MB .
As far as I understand, it has to do with the fact that the code gets obfuscated and with storing stacktraces, but could someone please explain in more detail? Is it like, there were too many exceptions with huge stacktraces and they all got cached in? but 120MB is still huge, no?
Best How To :
If any errors occur, this would mean error messages and stack traces would contain no useful information to you. To that end resymbolizitaion has been imlemented. Symbol maps are generated by the GWT compiler (at compile time) if the
-extra compiler argument is provided. This symbol map contains mappings from the generated short identifiers to the original Java identifiers, so in case of errors the original names can be reproduced (simply looked up from the symbol map).
You can read more about this here: Resymbolization / Deobfuscation