Start here. This is the direct spoken answer to practice first.
Why this question matters
Both artifacts can contribute to memory investigations, but they preserve different state and impose different costs. Choosing deliberately avoids a large sensitive dump when heap statistics are enough, or an incomplete heap artifact when thread and native state matter.
I use a GC dump when the question is which managed objects survive and what roots retain them. I use a full process dump when I need thread stacks, locks, exception state, native memory context, or a persistent hang. A GC dump is narrower but still has collection cost, while a full dump is larger and more sensitive. The symptom determines which artifact is justified.