社区
Java
帖子详情
关于JAVA垃圾回收
AllenSDD
2009-10-12 10:18:44
java里面有什么方法会让垃圾回收强制执行?
面试的时候问到这个问题了,我收没有,面试官还让我回去看java核心代码
多谢高人
...全文
323
11
打赏
收藏
关于JAVA垃圾回收
java里面有什么方法会让垃圾回收强制执行? 面试的时候问到这个问题了,我收没有,面试官还让我回去看java核心代码 多谢高人
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
frankyuJava
2011-11-03
打赏
举报
回复
其实我最讨厌这种“面试官还让我回去看java核心代码”
直接给个答案呗 这样大家回来讨论也知道他的所指。
zhangzhongke007
2009-10-12
打赏
举报
回复
路过,学习。
lzh_me
2009-10-12
打赏
举报
回复
以下是引用别人的:
Java的垃圾回收机制一般包含近十种算法。对这些算法中的多数,我们不必予以关心。只有其中最简单的一个:引用计数法,与编码有关。
一个对象,可以有一个或多个引用变量指向它。当一个对象不再有任何一个引用变量指向它时,这个对象就被应用抛弃了。或者说,这个对象可以被垃圾回收机制回收了。
这就是说,当不存在对某对象的任何引用时,就意味着,应用告诉JVM:我不要这个对象,你可以回收了。
JVM的垃圾回收机制对堆空间做实时检测。当发现某对象的引用计数为0时,就将该对象列入待回收列表中。但是,并不是马上予以销毁。
许多人对Java的垃圾回收机制不放心,希望在应用代码里控制JVM的垃圾回收运作。这是不可能的事。对垃圾回收机制来说,应用只有两个途径发消息给JVM。第一个就是将指向某对象的所有引用变量全部移走。这就相当于向JVM发了一个消息:这个对象不要了。第二个是调用库方法System.gc(),多数书里说调用它让Java做垃圾回收。
第一个是一个告知,而调用System.gc()也仅仅是一个请求。JVM接受这个消息后,并不是立即做垃圾回收,而只是对几个垃圾回收算法做了加权,使垃圾回收操作容易发生,或提早发生,或回收较多而已。
JVM的垃圾回收机制有多个算法。除了引用计数法是用来判断对象是否已被抛弃外,其它算法是用来确定何时及如何做回收。JVM的垃圾回收机制要在时间和空间之间做个平衡。为了提高系统效率,垃圾回收器通常只在满足两个条件时才运行:即有对象要回收且系统需要回收。垃圾回收要占用时间,因此,Java运行时系统只在需要的时候才使用它。因此你无法知道垃圾回收发生的精确时间。
lzh_me
2009-10-12
打赏
举报
回复
只能“督促”一下,不知道具体什么时候执行。System.gc();
AllenSDD
2009-10-12
打赏
举报
回复
他否认了GC()。有没有同志读了他所说的java核心代码?
zl3450341
2009-10-12
打赏
举报
回复
貌似不可以强制吧
ZangXT
2009-10-12
打赏
举报
回复
[Quote=引用 7 楼 justformygame 的回复:]
不同jvm,gc实现算法不同
不是所有的都可以强制gc
[/Quote]
嗯,至少可以通过命令行参数指定把System.gc()忽略掉。
justformygame
2009-10-12
打赏
举报
回复
不同jvm,gc实现算法不同
不是所有的都可以强制gc
ZangXT
2009-10-12
打赏
举报
回复
[Quote=引用 4 楼 allensdd 的回复:]
当时面试官是肯定的说有的……
[/Quote]
那他肯定认为是System.gc()了。
BearKin
2009-10-12
打赏
举报
回复
[Quote=引用 2 楼 lvbang_lzt 的回复:]
以下是引用别人的:
Java的垃圾回收机制一般包含近十种算法。对这些算法中的多数,我们不必予以关心。只有其中最简单的一个:引用计数法,与编码有关。
一个对象,可以有一个或多个引用变量指向它。当一个对象不再有任何一个引用变量指向它时,这个对象就被应用抛弃了。或者说,这个对象可以被垃圾回收机制回收了。
这就是说,当不存在对某对象的任何引用时,就意味着,应用告诉JVM:我不要这个对象,你可以回收了。
JVM的垃圾回收机制对堆空间做实时检测。当发现某对象的引用计数为0时,就将该对象列入待回收列表中。但是,并不是马上予以销毁。
许多人对Java的垃圾回收机制不放心,希望在应用代码里控制JVM的垃圾回收运作。这是不可能的事。对垃圾回收机制来说,应用只有两个途径发消息给JVM。第一个就是将指向某对象的所有引用变量全部移走。这就相当于向JVM发了一个消息:这个对象不要了。第二个是调用库方法System.gc(),多数书里说调用它让Java做垃圾回收。
第一个是一个告知,而调用System.gc()也仅仅是一个请求。JVM接受这个消息后,并不是立即做垃圾回收,而只是对几个垃圾回收算法做了加权,使垃圾回收操作容易发生,或提早发生,或回收较多而已。
JVM的垃圾回收机制有多个算法。除了引用计数法是用来判断对象是否已被抛弃外,其它算法是用来确定何时及如何做回收。JVM的垃圾回收机制要在时间和空间之间做个平衡。为了提高系统效率,垃圾回收器通常只在满足两个条件时才运行:即有对象要回收且系统需要回收。垃圾回收要占用时间,因此,Java运行时系统只在需要的时候才使用它。因此你无法知道垃圾回收发生的精确时间。
[/Quote]
学习了 这也就说明了为什么对象用完之后马上要将他指向NULL 另外 如果LZ你有心的话可以尝试下 new他几W个对象 然后重写那个对象的finalize方法 看看他啥时候会销毁
另外面试官不是绝对正确的
AllenSDD
2009-10-12
打赏
举报
回复
当时面试官是肯定的说有的……
题5 正确的
Java
垃圾回收
说法
关于
Java
垃圾回收
,正确的是? a.对于适用于
垃圾回收
的对象而言,如果finalize()方法在执行期间抛出了异常,则
Java
会忽略该异常。并销毁该对象。 b.所有对象都有一个finalize()方法。 c.可以通过明确调用...
什么是
java
full gc_关于
Java
垃圾回收
,你必须要知道FullGC是什么
本文共3198字,是本人前几天面试被提问到的一个问题,将在该文中阐述关于
Java
垃圾回收
——Full GC的相关知识,包括定义、触发条件、具体过程。前几天面试的时候,面试官在最后问了我一个有关Full GC的
垃圾回收
问题,...
理解
java
垃圾回收
器
网上关于
java
垃圾回收
机制的文章实在是太多,但是以前看那些文章都是随便了解大概,并给有深入考虑,所以一旦时隔较长时间,就会对其中的一些具体的原理生疏。所以,在这里还是亲自整理下关于常用
垃圾回收
机制以及...
java
垃圾回收
的方法_
java
垃圾回收
的方法都有哪些
我们在前几期的文章中曾经给大家讲解过
java
编程开发的
垃圾回收
机制问题,而今天我们就再来聊聊
java
垃圾回收
的方法都有哪些。1、标记清除法(Mark-Sweep)标记清除算法是现代
垃圾回收
算法的思想基础。它主要分为两个...
关于
Java
垃圾回收
机制,你所需要知道的一切
1.
垃圾回收
的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在
Java
中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级...
Java
50,523
社区成员
85,601
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章