В стеке хранятся только примитивные типы и ссылки.Объекты всегда создаются в куче, поэтому типы данных, которые будут храниться в стеке:
- Локальные переменные типа byte, char, int, long, float, double, самые длинные из них - doubleчто составляет 8 байт
- Ссылки на объекты - 4 байта на 32-битном vm, 8 байтов на 64-битном vms (возможно, короче, 48-битные ссылки используются для экономии места)
Примечаниечто массивы являются типами объектов, поэтому они хранятся в куче, также если у вас есть примитив, являющийся полем в классе, то примитив является частью объекта и, следовательно, будет храниться в куче.
Так что довольно сложно нехватить места в стеке для потока, если у вас нет рекурсии на ВПП.Я полагаю, что это причина, по которой дизайнеры Java не дают вам способа узнать размер стека.
Еще одна причина не указывать размер стека состоит в том, что это могут быть детали реализации, которые вы можетеничего не поделаешь, вы не можете изменить размер стека потока после того, как вы создали поток, и вы не можете сделать арифметику указателей, так какой смысл знать размер стека?