Я столкнулся с этим недавно на Win2008r2 и подумал, что поделюсь своим решением, так как потребовалось время, чтобы разобраться. Комментарий Роба о psexec -s - это то, что сделал это для меня.
Похоже, что в Vista и более поздних версиях jstack не работает со службами из-за пользовательского контекста. Это не имеет ничего общего с памятью. Я подозреваю, что это та же самая причина, по которой люди видели эту проблему в 2003 году через удаленный рабочий стол, если вы не используете ключ / admin или / console на mstsc. В Vista ужесточение безопасности, вероятно, и сломало ее.
Запуск моего приложения из окна cmd работал нормально, но это не помогает мне отладить нашу стандартную установку. Включение порта отладки Java (для VisualVM, Eclipse или большинства других отладчиков Java) требует перезапуска приложения, поэтому вы теряете состояние, которое, вероятно, пытаетесь захватить, если у вас еще не включена отладка. Запуск службы под моими пользовательскими учетными данными не работал - я был немного удивлен этим. Но psexec -s запускает jstack из системного контекста, который работает как шарм. О, и вам нужно будет запустить psexec из командной строки с повышенными привилегиями, если UAC включен.