社区
Java SE
帖子详情
请教Java高手:关于对象销毁的问题
vivanboy
2006-11-22 01:44:51
1.如何手工销毁一个对象,释放其占用的内存空间
2.如果一个对象容器中,比如ArrayList,其中存放了很多对象,这些对象在什么情况下会自动销毁?容器对象销毁了,这些对象会自动销毁吗?调用ArrayList.clear()方法以后,这些对象会自动销毁吗?
...全文
691
21
打赏
收藏
请教Java高手:关于对象销毁的问题
1.如何手工销毁一个对象,释放其占用的内存空间 2.如果一个对象容器中,比如ArrayList,其中存放了很多对象,这些对象在什么情况下会自动销毁?容器对象销毁了,这些对象会自动销毁吗?调用ArrayList.clear()方法以后,这些对象会自动销毁吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qinqinxiatiao
2006-11-23
打赏
举报
回复
finalize
maquan
2006-11-23
打赏
举报
回复
GC 受先天条件制约,必然存在效率问题(相对于“程序主动释放”而言),因为它不可避免地是一个“发现-清除”的过程。无非是某个算法在某些情况下性能表现更好一点而已。
不过,好像目前还没有关于 GC 在“正确性”方面的 BUG 报告。至于“java程序总是那么占内存,而且越占越多,包括eclipse之类的软件”,应该跟 GC 的“正确性”关系不大,倒是有可能跟 GC 的“性能优化算法”有关系。
jifei0611
2006-11-23
打赏
举报
回复
studying
千里冰封820
2006-11-23
打赏
举报
回复
GC确实有它不完善的地方
以后的JVM会改进的
vivanboy
2006-11-23
打赏
举报
回复
晕,感觉大家都太依赖gc了!
为什么java程序总是那么占内存,而且越占越多,包括eclipse之类的软件,个人觉得其中肯定有gc处理不完善的原因
powerpretty
2006-11-23
打赏
举报
回复
好象在java中有一个析构函数吧。finalize()
cutcutcutcut
2006-11-22
打赏
举报
回复
如果在调用ArrayList.clear()的同时,其中有一个对象正在被其他线程调用,这个时候会出现什么情况?
ArrayList中放的是对象的"引用",如果对象还被其他地方"引用",你即使clear()一万次,对象还在.
persevere
2006-11-22
打赏
举报
回复
JAVA自带了回收机制,它是当达到一定的程度,自动会去回收
LexChen
2006-11-22
打赏
举报
回复
析构函数是有的,就是所谓的 finalize ,但是调用该方法并不能保证对象本身会立刻
被gc回收
jicken_woo
2006-11-22
打赏
举报
回复
似乎很遥远的东西。。。、
bushuang
2006-11-22
打赏
举报
回复
在你用JNI的时候使用c或者c++手动在栈上分配对象空间时要手动回收
wangtong408
2006-11-22
打赏
举报
回复
java语言自带gc回收机制,这些东西,让系统自己做去吧,咱们不用考虑了
loveyuxi
2006-11-22
打赏
举报
回复
同意楼上的,java语言中并没有析构函数。自身的垃圾回收机制就很强,所以释放的问题一般可以不用考虑的。当然特殊的情况除外,不过我还没有遇到过。:)
malligator
2006-11-22
打赏
举报
回复
根本不用理这些东西——除非是高高手——平时稍微注意就可以了
如果你明白第3个问题的a=new A()分配的内存没有用到(好玩?),避免这么写不就可以了——实际上是被回收的
Java号称自动回收,一般情况应该是没有问题的;如果到了这个问题也需要计较的时候,你已经是高高手了
如果还想进一步了解,百度或google一下吧,好多东西,我都看不过来~
vivanboy
2006-11-22
打赏
举报
回复
如果在调用ArrayList.clear()的同时,其中有一个对象正在被其他线程调用,这个时候会出现什么情况?
vivanboy
2006-11-22
打赏
举报
回复
晕,如果真是这样,那真不敢相信JAVAR虚拟机能做到这么牛
wanguanghai
2006-11-22
打赏
举报
回复
同意楼上的
buyaowen
2006-11-22
打赏
举报
回复
1。手工好像不可以
2。应该是告诉虚拟机这个ArrayList没用了,但是虚拟机不一定马上销毁它
3。会
hua820101
2006-11-22
打赏
举报
回复
1、通常情况不用自己动手来清理!
2、调用ArrayList.clear()方法以后,会被清理掉。
3、第一次创建的A的实例肯定会自动销毁
healer_kx
2006-11-22
打赏
举报
回复
Java某些版本的语法是支持C++方式的手工释放的.
这样我觉得比较好一些,但是不是Java标准.
至于他们甚么时候被销毁,不是我们可以控制的,那是gc的事情.
我们写代码只能保证gc能不能删除他们.
加载更多回复(1)
java
面试宝典:留着慢慢看
1、面向
对象
的特征有哪些方面? 答:面向
对象
的特征主要有以下几个方面: - 抽象:抽象是将一类
对象
的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注
对象
有哪些属性和行为,并不...
【经典】《
Java
170道面试笔试题全面含答案》涉及
java
/数据库/Spring框架/JVM/数据结构算法/设计模式相关
RSS订阅原【经典】《
Java
170道面试笔试题全面含答案》涉及
java
/数据库/Spring框架/JVM/数据结构算法/设计模式相关2017年08月06日 16:02:13阅读数:12290《
Java
170道面试笔试题全集》 -更新版-8.302018/4/7 日常修复...
Java
程序员面试全集(上)
Java
基础 1、面向
对象
的特征有哪些方面? 答:面向
对象
的特征主要有以下几个方面: - 抽象:抽象是将一类
对象
的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注
对象
有哪些属性和行为,并...
java
面试170道精讲:留着慢慢看
1、面向
对象
的特征有哪些方面? 答:面向
对象
的特征主要有以下几个方面: - 抽象:抽象是将一类
对象
的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注
对象
有哪些属性和行为,并不关注...
Java
超强面试题
Java
程序员面试题集(1-50) 一、
Java
基础部分 1、面向
对象
的特征有哪些方面? 答:面向
对象
的特征主要有以下几个方面: 1)抽象:抽象是将一类
对象
的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。...
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章