JVM memory dump

Is it possible to do a jvm memory dump with new relic? I would like to download the dump and to use tools like Eclipse Memory Analyser so I can check memory leaks easily.

It would be event better if New Relic can show those reports directly like Plumbr does

Is this posible? Where can I do a feature request?

Awesome tool guys!
Cheers!
Fernando Boucquez

2 Likes

Hi @fboucquez. At this time it is not possible to create a heapdump from the Java agent. I have, however, filed a feature request with our project managers to consider this for a future release. While we can’t guarantee when or if this feature will be implemented, we take customer requests very seriously and use them to prioritize which features we implement next. Thanks for helping us improve the product!

Thanks Kyle for creating the feature request. Plumbr helped us finding a memory leak with that tool. I reckon you could do something similar once you know when to run a memory dump.

I would put a link but it doesn’t allow me, google plumbr memory leak.

Hi Kyle, where can I track the memory dump feature request?

Cheers
Fernando

Hi @fboucquez , You should be notified by email if the feature is implemented. You can also check the Java agent release page for the updates in the agent.

In the meantime, you can check the JVM pages for memory information. Please find more details in the below links:
https://docs.newrelic.com/docs/apm/applications-menu/monitoring/jvm-metrics-page

One thing that you may want to know is that the agent uses the circuit breaker detects early symptoms of memory exhaustion.

Hope this is helpful to you. :slight_smile:

+1 for feature request: JVM Heap Dump from New Relic

  • 1 for this feature

+1 for this feature

This feature would be very helpful. Also providing a configuration to take automatic heap dumps based on some alert condition would be much better.

+1 for heap analysis.

Hey @terry6 - thanks for adding your +1, I’ll get that filed here for you.

+1 for feature request: JVM Heap Dump from New Relic
Especially while we are running with JRE instead of JDK inside docker containers

1 Like

Hey @seckin.pulatkan - thanks for adding the specifics you did :slight_smile: your +1 has been added

Hi all when we are going to get this feature on new relic capturing thread dump

+1. Can NR product management comment on road map? Is this even on radar?

Hey @gautam.paritala & @tom.jacob1

I don’t have an update on this - but I’m going to talk to the right team to try get an update for you

+1 for this. WAS ND with federated standalone nodes. Two App running in separate JVM’s running critical business apps that service 100+ calling applications. This app is the system of record for Enterprise Customer information.

Definitely want to chime in here. Having a circuit breaker is great - “Your car is about to crash”, but having a heap dump would be really useful “Here’s WHY your car crashed”.

The New Relic APM window shows all sorts of anomalies just prior to a crash, since the application performs in an inconsistent fashion when memory runs low. Simply knowing that there was an uptick of 500% of objects of type XXX in the minutes preceding the crash might help give a thread to pull on…

Hi all, would this new extension cover what you’re looking for?

https://docs.newrelic.com/docs/agents/java-agent/instrumentation/extension-additional-instrumentation-modules#class-histogram

It isn’t a full heap dump, but you can tune the configuration to capture the top n classes by bytes. (Default is 50.) Hope this helps!

+1 on this feature.
@nlidbury, I followed the steps and it’s helpful to see the top classes occupying memory. I want to know if there exists an extension that tells us why certain classes are persisting in memory causing memory leaks? Is there an extension for such a feature or we just need to wait for? Thanks

Open a shell with the same user that is running the JVM to avoid OS security problems. Depending on whether jmap or jcmd is available, execute one the following command, where $JAVA_HOME is the one that was used to launch the JVM to analyze (replace 32088 with the PID you found in the previous step): prepaidcardstatus

$JAVA_HOME/bin/jmap -dump:format=b,file=heap.bin 32088

or

$JAVA_HOME/bin/jcmd 32088 GC.heap_dump heap.bin

The heap dump is written in heap.bin file in the current working directory.

1 Like