Разница между стеком и кучей в контексте хранения данных в Java заключается в том, что стек хранит локальные переменные и примитивные типы данных, а куча — объекты и массивы. 12
Стек выделяется для каждого потока и содержит информацию о том, какие методы вызвал поток, а также все локальные переменные, требующиеся для выполнения методов из стека потока. 1 Переменные в стеке имеют определённую видимость (область видимости) и не видны остальным потокам, только потоку, создавшему их. 1
Куча — это общая для всех потоков область памяти, где хранятся все объекты, созданные в приложении, независимо от того, какой поток их создал. 1 Любой объект, созданный в куче, имеет глобальный доступ, и на него могут ссылаться из любой части приложения. 8