java内存优化问题~~~~~~~~~~~~~~~

cntmi 2009-07-01 03:55:28


import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import platform.ai.base.app.ConnDBConfig;
import platform.ai.base.common.BaseObject;
import platform.ai.base.conf.BaseConfig;
import platform.ai.base.log.LogFileWriter;
import platform.ai.base.util.common.StringUtil;
import platform.dt.mq.util.MQSTATIC;
import stmacmbas.branch.socket.threads.RecordCigInfoFiles;
import stmacmbas.branch.socket.threads.Server;
import stmacmbas.branch.union_first_branch.comm.FileOperate;
import stmacmbas.branch.union_first_branch.comm.Joint;
import stmacmbas.branch.union_first_branch.comm.StrConnect;

public class ProcessJointCiginfos extends BaseObject {

String unionQueryPath = MQSTATIC.BUFFERPATH + "ciginfo/branch/union/" ;

private BufferedReader reader;

File file ;

String[] str;

String content;

String ip;

String key ;

String currentContent ;

String oldStr ="" ;

String newStr ="" ;

String filename ="" ;

StringBuffer s1 = new StringBuffer("") ;

Map dataMap = new HashMap();

LogFileWriter logWriter = new LogFileWriter(ConnDBConfig.TEMP_PATH, "ProcessJointCiginfos", this);
StrConnect strConnect = new StrConnect(logWriter);
FileOperate fileOperate = new FileOperate(logWriter);



public ProcessJointCiginfos() {

}


public File processData() {


try {
//处理过程

}catch(Execption e){

}finallay{
reader=null;

file =null;

str=null;

content=null;

ip=null;

key=null ;

currentContent=null ;

oldStr =null;

newStr=null;

filename=null;

s1 =null;

dataMap =null;

logWriter =null;
strConnect =null;
fileOperate =null;
}

}
}



我想在finally里面,把所有定义的对象全都初始化为null,这样会不会对内存优化有作用??
...全文
208 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰思雨 2009-07-01
  • 打赏
  • 举报
回复
我感觉是个良好的编程习惯问题。

情况允许时,将对象引用设为空,可以帮助垃圾回收。
例如楼主的ProcessJointCiginfos 类,当程序中保持这个类的对象时,
它的成员变量在没有设置成null时,是不会被GC的。
如果在最后将一些不影响其他方法使用的成员变量置为null,
那么,在调用processData方法后,有些成员变量所引用的对象将有可能会被GC。

如果该对象不会被程序永久保持,那么,它(包括其成员变量的引用对象)也会被GC掉。


还有,楼主要明白,什么是初始化。
将某个对象的引用设置为null,某些时候叫做初始化,
但,并不是所有这样的情况都叫初始化。
x_pengcheng 2009-07-01
  • 打赏
  • 举报
回复
在程序中如果大量用到字符串操作,建议用StringBuider或StringBuffer,java的内存回收靠GC,放在finally块中,
作用不大.
冥王之锤 2009-07-01
  • 打赏
  • 举报
回复
对你这段代码没有作用。在有些情况下是可以的。
Marty束 2009-07-01
  • 打赏
  • 举报
回复
好像有个gc参与管理的,用于垃圾回收
弘石 2009-07-01
  • 打赏
  • 举报
回复
没有作用

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧