Общий Вопрос: Java имеет "кучу" и локальный стек. Действительно ли можно ли получить доступ к какому-либо объекту от "кучи"?

Обратная передача будет значением быстрого ответа. Значение: когда пользователь нажмет на кнопку, значение будет отправлено разработчику. Если вы хотите запустить веб-крюк из постбэка, уловка состоит в том, чтобы иметь уникальное значение, например POSTBACK , а затем вы можете установить его как триггер из другого навыка, если _source равен POSTBACK затем сделайте звонок через веб-крючок.

Надеюсь, что ответ на вопрос:)

15
задан Berlin Brown 14 November 2008 в 03:08
поделиться

3 ответа

Нет никакой инструкции в системе команд JVM, которая предоставляет произвольный доступ к "куче". Следовательно, управление байт-кодом не поможет Вам здесь.

JVM также имеет верификатор. Это проверяет код каждого метода (поскольку класс загружается) проверить, что метод не пытается вытолкать больше значений от стека выполнения, чем, что это продвинуло на него. Это гарантирует, что метод не может "видеть" объекты, на которые указывает его вызывающий метод.

Наконец, локальные переменные хранятся в массиве на метод (известный как "массив локальных переменных"). Снова, верификатор удостоверяется, что каждая инструкция по чтению-записи from-/to-, что массив указывает индекс, который является меньше, чем размер массива. Обратите внимание, что эти инструкции JVM могут только указать постоянный индекс. Они не могут принять вычисленное значение и использовать его в качестве индекса.

Так для резюме ответ является №

17
ответ дан 1 December 2019 в 02:10
поделиться

Относительно объектов на стеке это - только новый Java 6 VM от SUN (и возможно некоторые другие), который попытается оптимизировать код байта путем помещения объектов на стек. Как правило, все объекты войдут в "кучу". Для ссылки, выезда: http://www.ibm.com/developerworks/java/library/j-jtp09275.html

Также спецификация JVM в http://java.sun.com/docs/books/jvms/second_edition/html/Overview.doc.html#6348 . JVM защищает свою "кучу", просто не давая Вам, инструкции должны были повредить ее. Дефекты в реализациях JVM могут заставить Ваш пробег варьироваться.

4
ответ дан 1 December 2019 в 02:10
поделиться

Все объекты в Java расположены на "куче". Я не совсем уверен, что Вы подразумеваете "под объектами доступа от "кучи"". Единственными вещами, сохраненными на стеке, является список функций, которые звонили в текущий контекст и их локальные переменные и параметры. Все локальные переменные и параметры являются или типами примитивов или ссылками.

, Если Вы выделяете объект с помощью new (который является единственным способом выделить нетипы примитивов; да это включает типы массива), затем объект выделяется на "куче", и ссылка на тот объект хранится или на стеке или на "куче", в зависимости от того, если ссылка хранится в локальной переменной / параметр или как член другого объекта.

При передаче как параметры функциям все объекты передаются ссылкой - если функция изменяет параметр, исходный объект также изменяется. Тождественно, можно было также сказать, что ссылки на объект передаются значением - при изменении параметра для обращения к новому объекту, оно продолжит относиться к тому объекту на время функции, но исходный объект, который был передан в, будет все еще относиться к тому, что оно упомянуло прежде. Типы примитивов также передаются значением.

9
ответ дан 1 December 2019 в 02:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: