有人知道是否可以在运行时修改JVM设置(例如-dname = value)? 我需要这个小技巧来运行我的Java存储过程(oracle 10g)。
答案 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()更改系统属性,但这是否具有效果实际上取决于该系统属性。某些属性是静态读取的,即在类加载时,其他属性可能会将值缓存在某个对象字段中。