I have been using Eclipse Memory Analysis tool to examine a heap dump. I have not seen any cases where an object was kept alive by a local variable in a thread stack.
Are java thread stacks preserved in heap dumps? If not, do these objects get counted as unreachable objects in the dump? If so, is there any way to preserve the thread stacks so that uncollected garbage can be distinguished from local variable values?