Відповіді:
Sampling
означає взяти багато відвалів потоку та аналізувати сліди стека. Зазвичай це швидше, не вимагає змін у вашому байт-коді (що може порушити його), але також є менш точним.
Profiling
означає інструментувати ваші класи та методи, тому вони "звітують" щоразу, коли вони запущені. Це точніше, оскільки він підраховує кожне виклик інструментального методу, а не лише тих, що потрапляють під час виконання дампа. Однак інструментарій означає, що байт-код ваших класів змінено, і це може порушити вашу програму. Власне, з цієї причини використання профілювання на великих серверах прикладних програм (наприклад, JBoss або WebLogic) часто призводить до вмирання або зависання.