2008-09-18 5 views
0

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

+0

Вопросы, подобные этому, просят, чтобы просмотреть увеличенное изображение. Какова общая цель? Возможно, есть лучший путь .... – willCode4Beer 2008-09-18 17:45:04

ответ

5

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

+0

Также имейте в виду, что некоторые свойства системы не будут иметь никакого эффекта, если они установлены во время выполнения. – jsight 2008-09-18 14:57:07

0

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

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

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

0

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

1

Вы можете использовать класс 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. Примечание: import oracle.aurora.vm.OracleRuntime; будет разрешаться на oracle jvm, найденном на «aurora.zip»

Смежные вопросы