- Stack
Each thread maintains a stack of its own, so there is no concurrent access problem.
- Heap
Threads share a single heap space, concurrent access occurs.
Eclipse memory analyzer tool (MAT) is a good memory profiling tool, it's an open source project. And here is a good tutorial on it.