3 ms·
> We tried VisualVM but since Clojure memory consists mostly of primitives (Strings, Integers etc) it was very hard to understand which data of the application
by pron 5y ago
> We tried VisualVM but since Clojure memory consists mostly of primitives (Strings, Integers etc) it was very hard to understand which data of the application is being accumulated and why.
You should try deeper profiling tools like JFR+JMC (http://jdk.java.net/jmc/8/ http://jdk.java.net/jmc/8/) and MAT (https://www.eclipse.org/mat/ https://www.eclipse.org/mat/).
- gavinray 5y agoI was going to suggest this -- inside of VisualVM, you can right-click a process and then press "Start JFR" Then wait a bit, right click it again, and select "Dump JFR" What you get is a Flight Record dump that contains profiling information you can view that's more comprehensive than any language I've ever seen. I used this for the first time the other day and felt like my life has been changed. Specifically, if you want to see where the application is spending it's time and in what callstacks, you can use the CPU profiling and expand the threads -- they contain callstacks with timing There's some screenshots in an issue I filed here showing this if anyone if curious what it looks like: https://github.com/redhat-developer/vscode-java/issues/2049 https://github.com/redhat-developer/vscode-java/issues/2049 Thanks Oracle.