原因
Weblogic内存溢出的原因可能有以下几点:
①WebLogic系统突然大量占用线程 ,这样的话,线程大量被使用,内存大量被消耗
②WebLogic诊断文件占用大量的内存
③在java中有垃圾回收,但是在程序中可能有bug,导致垃圾无法进行回收
④在64位的系统中使用了32位的jdk(或者相反),导致内存无法充分利用
解决方案:
针对数据源或者线程方面的连接数偏大的话,可以调用监控器进行实施监控,一旦发现不需要的数据源或者进程的话可以将其kill或者关闭。
Java有自动的垃圾回收机制,但是如果系统出现问题的话,也可以进行手动垃圾回收,一下是一个简单的垃圾回收实例:
public class A {
String str;
public A(String str){
this.str=str;
}
public String toString(){
return str;
}
protected void finalize() throws Throwable {
System.out.println(str);
}
public static void main(String[] args) {
A a=new A("你好");
a=null;
System.gc();
}
}
如果系统是64位的话,建议使用64位的jdk,方便内存的使用。
对于诊断文件的增长,可以增加启动参数进行控制:
Dcom.bea.wlw.netui.disableInstrumentation=true