在运行时修改JVM参数

时间:2008-09-18 14:42:21

标签: java

有人知道是否可以在运行时修改JVM设置(例如-dname = value)? 我需要这个小技巧来运行我的Java存储过程(oracle 10g)。

4 个答案:

答案 0 :(得分:5)

假设你的意思是系统属性(-D ...; -d选择数据模型),System.setProperty(...)可能会做你想要的。

答案 1 :(得分:1)

您可以在java存储过程中使用OracleRuntime类。

    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());

此示例代码在oracle jvm中乘以2内存状态。 注意:import oracle.aurora.vm.OracleRuntime;将在oracle jvm上解决,发现于“aurora.zip”

答案 2 :(得分:0)

您绝对可以使用System.setProperty()在Java存储过程中设置系统属性。但是,它们只能用于当前的Oracle会话。

例如,如果连接到Oracle并运行设置系统属性的Java存储过程,则断开与Oracle的连接。下次连接到Oracle时,系统属性将不存在。与Oracle的每个会话都有自己的伪独立JVM(即使所有会话实际上共享一个JVM)。

如果您用于Oracle会话的帐户具有足够的权限,则可以运行外部操作系统命令,包括单独的外部JVM。

答案 3 :(得分:0)

您可以使用System.setProperty()更改系统属性,但这是否具有效果实际上取决于该系统属性。某些属性是静态读取的,即在类加载时,其他属性可能会将值缓存在某个对象字段中。