当前位置:  技术问答>java相关

刚接触JAVA,有个关于垃圾回收的问题不明白,请教大家!

    来源: 互联网  发布时间:2017-03-28

    本文导语:  public class Test { static int total=10; static boolean gcrun=false; public static void main(String[] args)  { while (!gcrun) { new Test(); } } public void finalize() { gcrun=true; System.out.println("Beginning to finalize."); } public Test() {...

public class Test
{
static int total=10;
static boolean gcrun=false;
public static void main(String[] args) 
{
while (!gcrun)
{
new Test();
}
}
public void finalize()
{
gcrun=true;
System.out.println("Beginning to finalize.");
}
public Test()
{
System.out.println(this);
}
}


这个程序的结果最后为什么会显示两遍Beginning to finalize.

|
哈哈,因为你在循环中调用new Test();以后并不会立刻执行public void finalize(),所以嘛就建立了多个Test对象,当然也就有多个Beginning to finalize.输出了。

|
我的理解是这样的,你new了多少对象出来,就“有可能”有Beginning to finalize.输出,仅仅是有可能而已,和内存有关系的,假如你在你机器上,new 了一百个对象,在释放了两个以后,系统认为内存够用的,所以就不再收集了,因为他不能一下子给你收拾得很干净,因为它有其它事要干。

在我的机器上是显示四次的。

gcrun这个变量的作是说在开始回收垃圾后就停止再产生垃圾。

不知道我这样理解对不对,我也是初学的

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 刚接触多线程,几个问题不明白
  • 怎么用javamail发送附件,小弟刚接触,请各位大侠指教,谢谢!!!
  • 初次接触,怎么在FreeBSD中使用C/C++?
  • 刚接触SUSE, 请问在它下边怎么用SVN,Bugzilla
  • linux我刚接触,我装了linux后,却把用户名和口令忘了,还有办法进却吗
  • 作为一个刚刚接触linux的新手来说,应该如何学习?从哪里开始?谢谢高手赐教!
  • 刚接触ubuntu ,一些概念有点乱,谁帮我理一下
  • 大家帮忙推荐一本linux socket编程的入门书,我刚接触socket,谢谢!!
  • 有接触过db2的高手吗?请问安装完后管理员的用户名和口令?
  • 小弟刚接触java,不知道大家现在都用什么编译源程序?
  • 刚接触javamail,高分问一些简单的问题
  • 以前没有接触过linux,现要在linux上写一个软件,请问我要看那些资料!
  • 刚接触JSP,有问题。
  • 想接触linux大家指点一下
  • 刚接触linux的新手的提问?
  • 脚本接触的太少,能帮忙解释一下,这句话是干什么的吗?
  • 我想接触一下LINUX的内核心,哪个版本比较合适哦.
  • 小弟刚刚准备接触LINUX,达人们进来啊谢谢了哦
  • 开始接触学习内核,新手提问!!很简单的,来得分吧
  • 初学Linux ,问一下应该接触什么版本的比较适合
  • 刚接触linux,发现安装好后通过grep memtotal查询发现比实际物理内存小。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3