I have a j2ee application and monitoring it by visualVM.
Lets say that I have a method like this:
public void doStuff(int param) {
String s = getStringVariable(param);
StringBuilder sb = new StringBuilder();
//Do stuff with sb object
}
From the thread tap, I can see that some of my threads stuck in the above method. So I have generated a heap dump file to figure out what is s and sb contains.
But how can I do that? I am using Eclipse Memory Analyzer.
Whenever an object is created, it's always stored in the Heap space and stack memory contains the reference to it. Stack memory only contains local primitive variables and reference variables to objects in heap space.
In most languages, local variables are automatic variables stored on the call stack directly. This means that when a recursive function calls itself, local variables in each instance of the function are given distinct addresses.
Local variables are stored in memory area of the corresponding function. Scope of a variable is a program part, in which a variable can be referred to. Variables declared inside a block (at the internal level), have the block as their scope.
Stack in java is a section of memory which contains methods, local variables, and reference variables. Stack memory is always referenced in Last-In-First-Out order. Local variables are created in the stack.
you can get the local variable's from your thread, because if a local variable is a currently a live, then that means the only reference for that variable is its own thread.
So first you need to list your current threads, and you can do that by:
Then to list the object for a specific Thread:
Then Search for your local variable with in a tag <Java Local>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With