Так что я относительно новичок в Java и просто прочитал this действительно интересную статью в Википедии об анализе побега. Тем не менее, единственный раз, когда упоминается, что распределение стека используется, когда объект не выходит из вызова метода. Это кажется несколько ограниченным; но опять же, я не могу думать ни о каком другом времени, я бы хотел, чтобы объект был выделен для стека. Поэтому мне интересно:Распределение ячеек Java Manual
1) Есть ли другой момент, когда было бы целесообразно выделить объект для стека?
2) Есть ли способ вручную выделить объект в стек, а не в кучу?
2.5) Если есть, может ли это сделать быстрее (для объектов, которые не уклоняются от метода), вместо того, чтобы анализировать бегство, нужно выяснить это? Или можно каким-то образом сказать Java что-то вроде «В этом методе мне нужен каждый объект, находящийся в куче, не потрудись проверить, может ли он быть в стеке»?
Спасибо!
1. В рекурсии, как только метод заканчивается, как возвращенный объект передается вызову более раннего метода, если он выделен стеку? 2. Я думал, что создает ссылку на String, которая хранится в куче. 2.5 Для оптимизации, но действительно больше из любопытства. – Sherz
Сделать первый аргумент для вашей рекурсивной функции ссылкой на список строк, рекурсивно добавить строки в ваш список ... в конце рекурсии установленный стек строк по-прежнему ссылаются. –
Это имеет смысл. А для 2 и 2,5? – Sherz