Использование Отдельный_jvm для запуска апплета в отдельных JVM не всегда работает - PullRequest
3 голосов
/ 22 сентября 2009

У меня есть апплет, который занимает достаточное количество памяти, поэтому мы хотим запустить его с Отдельным_jvm = true, чтобы каждый экземпляр получал свою собственную JVM (а не общую), чтобы мы не исчерпали память при повторном вызовы. Это работает на наших блоках разработки, но не на компьютерах наших клиентов.

Есть ли для этого причины безопасности?

Это подписанный и надежный апплет, так как мы делаем 3D-рендеринг.

Ответы [ 2 ]

8 голосов
/ 22 сентября 2009

Я бы предположил, что Sun Java 6 update 10 установлена ​​на компьютерах вашего клиента. Если нет, вы, вероятно, могли бы принудительно запустить апплет в JVM, версия которого по крайней мере 6u10 . Я не уверен в ошибке, которая будет выдана, или в сообщении об ошибке, если требуемая версия JVM не найдена.

Кроме того, нет никакой гарантии, что отдельный экземпляр JVM будет создан, когда в теге APPLET указан параметр Отдельное_jvm .

Единственная гарантия - апплет будет работать в своей собственной JVM, отделенной от других апплетов. Если JVM уже доступна и апплет не был загружен в эту JVM, то JVM может загрузить апплет в уже инициализированном экземпляре JVM.

Что касается примечаний к выпуску Sun Java 6 u10, стоит прочитать следующие существенные замечания:

Вот примерный набор руководств из заметок о выпуске 6u10 для совместного использования и создания новых экземпляров JVM:

  • Если аргументы командной строки, используемые для запуска существующего экземпляра JVM, являются расширенным набором запрашиваемых аргументов, будет использоваться существующий экземпляр JVM.
  • Если экземпляр JVM запущен для набора параметров командной строки «по умолчанию» (т. Е. Указанных в Панели управления Java без указания java_arguments), этот экземпляр JVM никогда не будет использоваться для запуска любого апплета, который имеет даже один аргумент командной строки, указанный с помощью java_arguments.
  • -Xmx обрабатывается специально: если существующий экземпляр JVM был запущен, например, с -Xmx256m с помощью java_arguments, а новый апплет запрашивает -Xmx128m, то новый апплет, скорее всего, будет запущен в существующем экземпляре JVM. Другими словами, спецификации -Xmx сопоставляются с тестом «больше или равно».

Поэтому лучше всего указывать java_arguments в теге апплета, чтобы была очень высокая вероятность запуска апплета в отдельной JVM.

2 голосов
/ 22 сентября 2009

Параметр separate_jvm был введен в 1.6u10. Если JVM вашего клиента старше этого, параметр будет игнорироваться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...