java里对象无法置空的原因

问题描述

定义了Person类,并且生成了Person类的对象数组,但是将对象数组置空后监测内存,发现Person类所用到的数据和Image等依然存在与内存中,就连在主线程里重复置空也没有效果,对象数组不为空,可以继续引用...求大神求解。没有重复加载...

解决方案

解决方案二:
是不是所有引用都置空了?只置空一个引用其他引用当然还能访问到比如abc都指向一个int[10]a=null了bc还是指向int[10]的所以内存不会被回收的
解决方案三:
楼主你写的对象数组,在取出后估计未置空,实际上造成内存泄露。
解决方案四:
还有置空后GC不会立即回收垃圾内存具体什么时间回收GC也无法保证
解决方案五:
LZ可以看看这个Java的内存泄漏http://mopishv0.blog.163.com/blog/static/54455932200981695814252/
解决方案六:
该回复于2011-02-10 11:27:44被版主删除
解决方案七:
这貌似是一道面试题。Image[]images=newImage[10];for(inti=0;i<images.length;i++){images[i]=newImage[i];images[i]=ImageCreateImage("/p"+i+".png");}images=null;---------------------------------我就写一些伪代码吧,,,你是直接把对象数组置空,但实际上每个对象的引用还在,并没有被释放。。
解决方案八:
记得好象有个finaly(){//...}方法,具体怎么实现你可以查查,我有点模糊,用来释放资源的另外J2ME优化方面,有说过,最好不要定义全局变量,你的置空可能是把全局置空,或者你的置空指向的不是你要置空的对象或者引用吧?多看看优化就行了,没必要刻意去置空.

时间: 2024-11-03 19:38:06

java里对象无法置空的原因的相关文章

java 判断对象是否为空

Java 中如何判断一个未知对象是否为空呢? 下面是一个通用的方法,判断字符串是否为空,集合是否为空,数组是否为空: Java代码   /**       * 判断对象或对象数组中每一个对象是否为空: 对象为null,字符序列长度为0,集合类.Map为empty       *        * @param obj       * @return       */       public static boolean isNullOrEmpty(Object obj) {          

java里的多态理解的模模糊糊的,到底什么是多态?多态和类是什么关系?和对象呢?

问题描述 java里的多态理解的模模糊糊的,到底什么是多态?多态和类是什么关系?和对象呢? java里的多态理解的模模糊糊的,到底什么是多态?多态和类是什么关系?和对象呢? 解决方案 多态,顾名思义就是一种概念,多种形态. 在Java中,泛型.继承和复写方法.函数重载都体现了多态. 具体你可以看维基百科上对应的词条. 解决方案二: 你只要记住 1.同一类中,方法的**重载**是多态的体现. 2.在不同的类中(继承),方法的**重写**也是多态的体现 解决方案三: 需要搞清楚面向对象的三大特征,封

编程-Java 三目运算符 判断两个对象是否为空

问题描述 Java 三目运算符 判断两个对象是否为空 //住院非空,对住院进行处理,住院不为空,判断门诊是否为非空,对门诊进行处理 //zyyzjymx!=null?f1(zyyzjymx):mzzdjymx!=null?f1(mzzdjymx):null; 不会写代码... 思路如上 求大神解决~ 解决方案 zyyzjymx!=null?(f1(zyyzjymx)):(mzzdjymx!=null?f1(mzzdjymx):null); 解决方案二: 你的条件写错了吧?住院非空和住院不为空 不

java 中 if (someobject != null) 检查对象是否为空的问题

先我们来看下面代码,对于这样的对象为空的检查: if (someobject != null) {     someobject.doCalc(); } 为了避免空指针异常,看起来也没什么不妥.不过代码里面一片一片的对象是否为空的判断,实在难看. 对象是否为空的契约 通常我们在定义API的时候,是遵循一些规矩的,这些规矩可以叫做规约,比如这样的接口: public Set<String> getCollections(); 通常情况下,或者说没有特殊说明的情况下,返回的set是不能为null的

POI向带有表头的excel模板里写入数据,写完后就把表头置空了

问题描述 如题,利用POI向带有表头的excel模板里写入数据,hsWorkbook.write(fos);fos.close();执行完后就把表头置空了,请问各位高手怎么处理?谢谢大家. 解决方案 解决方案二:FileInputStreamfile=newFileInputStream("SampleTest.xls");HSSFWorkbookhsWorkbook=newHSSFWorkbook(newPOIFSFileSystem(file));HSSFSheethssheet=

Java中关于内存泄漏出现的原因汇总及如何避免内存泄漏(超详细版)_java

Android 内存泄漏总结 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题.内存泄漏大家都不陌生了,简单粗俗的讲,就是该被释放的对象没有释放,一直被某个或某些实例所持有却不再被使用导致 GC 不能回收.最近自己阅读了大量相关的文档资料,打算做个 总结 沉淀下来跟大家一起分享和学习,也给自己一个警示,以后 coding 时怎么避免这些情况,提高应用的体验和质量. 我会从 java 内存泄漏的基础知识开始,并通过具体例子来说明 Android 引起内存泄漏的各种原因,以

java-求助,Java中对象序列化的作用是什么?

问题描述 求助,Java中对象序列化的作用是什么? Java中对象序列化的作用是什么?求大神相助,希望能全面一点哦.急求大神解答 解决方案 简单来说,对象像一颗树,里面有字段,如果字段是类型,那么它还有自己的字段. 但是网络传输.保存文件,都必须是线性的,连续的. 序列化就是把这棵树拍扁,成为一个序列的过程. 反序列化就是从一个序列中重新把这颗树拉回来的过程. 解决方案二: 把一个对象,转成流数据,对方根据这个数据还原成初始对象,适用于不同对象间的传输,通讯 解决方案三: 序列化多用于网络IO通

Java中对象的深复制和浅复制详解

1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象. ⑵深复制(深克隆) 被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量.那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象.换言之,深复制把要复制的对象所引用的对象都复制了一遍. 2.Java的clone()方法 ⑴clone方法将对象复制了一份并返回

Java中对象的深复制(深克隆)和浅复制(浅克隆)介绍_java

1.浅复制与深复制概念 ⑴浅复制(浅克隆)      被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象. ⑵深复制(深克隆)      被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量.那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象.换言之,深复制把要复制的对象所引用的对象都复制了一遍. 2.Java的clone()方法 ⑴clone方法将