Изменение параметров JVM во время выполнения - PullRequest
0 голосов
/ 18 сентября 2008

Кто-нибудь знает, возможно ли изменить настройки JVM во время выполнения (например, -dname = value)? Мне нужен этот маленький трюк для запуска моей хранимой процедуры Java (oracle 10g).

Ответы [ 4 ]

5 голосов
/ 18 сентября 2008

Предполагая, что вы имеете в виду системные свойства (-D ...; -d выбирает модель данных) System.setProperty (...) может делать то, что вы хотите.

1 голос
/ 28 сентября 2010

Вы можете использовать класс OracleRuntime внутри вашей хранимой процедуры Java.

    int times = 2;
 OracleRuntime.setMaxRunspaceSize(times *OracleRuntime.getMaxRunspaceSize());
 OracleRuntime.setSessionGCThreshold(times *OracleRuntime.getSessionGCThreshold());
 OracleRuntime.setNewspaceSize(times *OracleRuntime.getNewspaceSize());
 OracleRuntime.setMaxMemorySize(times *OracleRuntime.getMaxMemorySize());
 OracleRuntime.setJavaStackSize(times *OracleRuntime.getJavaStackSize());
 OracleRuntime.setThreadStackSize(times *OracleRuntime.getThreadStackSize());

Этот пример кода умножается на 2 состояния памяти в oracle jvm. Примечание: импорт oracle.aurora.vm.OracleRuntime; будет решен на оракуле jvm, найденном на "aurora.zip"

0 голосов
/ 18 сентября 2008

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

0 голосов
/ 18 сентября 2008

Вы можете определенно установить системные свойства в хранимой процедуре Java, используя System.setProperty (). Но они будут доступны только для текущей сессии Oracle.

Например, если вы подключаетесь к Oracle и запускаете хранимую процедуру Java, которая устанавливает системные свойства, затем отключитесь от Oracle. При следующем подключении к Oracle, системное свойство не будет присутствовать. Каждый сеанс с Oracle имеет свою собственную псевдо-отдельную JVM (хотя все сеансы действительно совместно используют одну JVM).

Если учетная запись, которую вы используете для сеанса Oracle, имеет достаточные права, вы можете запускать команды внешней операционной системы, включая отдельную внешнюю JVM.

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