把Connection设置null,有必要吗?设置Object为null是否释放资源?两个问题一并问

FoxMale007 2006-03-16 11:51:45
释放Connection的代码有的写法如下:
if(conn!=null&&!conn.isClosed()){ conn.close(); conn=null; }
是不是将conn对象设置为null就会销毁该对象或是加速释放呢?自己做了测试代码:

public class Test {

/**
*
*/
public Test() {
super();
}

/**
* @param args
*/
public static void main(String[] args) {
aa();
}

@Override
protected void finalize() throws Throwable {
// TODO 自动生成方法存根
super.finalize();
System.out.println("freed");
}


private static void aa()
{
Test tt = new Test();
System.out.println(tt.getClass().getName());
tt = null;
//System.gc();
}
}

实际上只有执行System.gc()才销毁了对象,那设置Object=null有何意义呢?
...全文
126 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
FoxMale007 2006-03-31
  • 打赏
  • 举报
回复
public class Test {

private int i;
/**
*
*/
public Test(int i) {
super();
System.out.println("Happy Birthday.");
this.i = i;
}

/**
* @param args
*/
public static void main(String[] args) {
aa();
}

@Override
protected void finalize() throws Throwable {
// TODO 自动生成方法存根
super.finalize();
System.out.println("freed." + i);
}

private static void doit(int i)
{
Test tt = new Test(1);
System.out.println(tt.getClass().getName() + i);
//tt = null;
}

private void doit()
{
Test tt = new Test(1);
System.out.println(tt.getClass().getName() + i);
//tt = null;
}

private static void aa() {
//doit(23); //<-- 放在这里则会释放
{
Test tt = new Test(1); //<-- 这个释放不了
System.out.println(tt.getClass().getName());
//tt = null;
tt = new Test(2);
}
System.gc();
}
}

答案似乎是这样的:
类实例设置为null视为该类不再被引用,这个跟一个变量重新赋值的效果一样。
crazycy 2006-03-17
  • 打赏
  • 举报
回复
当对象不被引用时就会被回收,这个过程是由GC来检查的,而不是设置成null就决定回收与否,毕竟设置成null后,后边有可能被再赋值再次使用的
fashchina 2006-03-17
  • 打赏
  • 举报
回复
设置为null 是为了垃圾回车更好的回收
Albert_1030 2006-03-17
  • 打赏
  • 举报
回复
gc销毁前会查看,引用是不是指向了无效的空间。
Albert_1030 2006-03-17
  • 打赏
  • 举报
回复
en en
horseyet 2006-03-17
  • 打赏
  • 举报
回复
如果不设置为null;就算调用了gc也不会销毁对象的
访真八字排盘系统介绍: 1、八字排盘 八字排盘是将年月日时按照天干地支的形式进行排列,一个时间单位代表了一个柱。八字由年柱、月柱、日柱和时柱共四个柱组成,也被称为四柱八字。八字学中基于中国阴阳五行、天干地支与刑冲克害、以及民间盲派的神煞论等方式,进一步预测爱情顺遂、工作高低、姻缘好坏、财富高低、学业成就、身体健康等事的学。 八字排盘由以下元素组合:年月日时四柱、大运干支、胎元 、流年干支、十神、地势、神煞等。生辰八字不只是把干支历计算出来,而还要遵守月令、节令的强弱,时辰的阴阳变化进行校正。排盘分析,就是根据出生者的性别、天干地支的阴阳五行关系、进一步推算出来的一套方法论,给预测者做人生吉凶的参考数据,在未来事业、财运、婚姻、家庭等时,能做出风险较低的决策。 八字排盘怎么看 八字排盘由年、月、日、时四柱组成,每柱包含一个天干和一个地支,共八个字。年柱代表出生的年份,月柱代表出生的月份,日柱代表出生的日期,时柱则代表出生的时辰。每个柱的干支组合都会对个人的命运产生影响。天干地支旁边标注的正财、偏财、偏印、正印、比肩、劫财、食神、伤官、正官、七杀等,称为十神。 2、八字排盘软件介绍 我们是腾讯云市场金牌合作伙伴,广州正规软件开发公司,开发的八字排盘系统数据最全面精准,我们八字排盘采用最精确的排盘程序,而且运用“真太阳时”,进行更精确的时间划分。大家都知道我们使用的北京时间,是统一规定的标准时间。而八字排盘需要相对于太阳方位的天文时间,即平太阳时。我们国家地大物博,北京时间19时,哈尔滨已经夜幕降临,而新疆却还是太阳高挂,这时哈尔滨的天文时间可能在20:00以后,而新疆的天文时间可能在16时以前。北京时间是东经120度经线的平太阳时,如果您出生地的经度与北京时间所处的经度差异较大,或者处于单数时间点的前后,比如6点差一刻,8点,10点15分等

62,634

社区成员

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

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