文章详情页
关于Java垃圾回收问题
浏览:237日期:2023-12-17 10:06:52
问题描述
循环中的变量在每次循环后都会被回收吗
比如
for (int i=0;i<1000000;i++){ Date date=new Date(); }
这个date没有被引用,这样会被垃圾回收吗? 如果创建对象被引用,结果又是怎样的了?
问题解答
回答1:java的GC有YGC和FGC。你这里没有被引用的date对象一定会被回收,但不是在每次循环结束后。GC的时机和你的代码执行没有必然联系。相关知识,你可以baidu下java GC
回答2:这个问题的答案在于,jvm的垃圾回收机制在什么情况下会进行垃圾回收。局部变量的作用于是{},也就是说,date没有被引用了,当执行垃圾回收动作的时候,这里的date就会被回收。
回答3:new一个对象,那么就是存放在堆中,而且刚创建的对象存放在eden区中,只有当eden区满了,才会触发Monitor GC进行回收。你可以在运行参数中添加-XX:+PrintGCDetails观察GC回收的情况。
标签:
java
相关文章:
1. 闯关的第二个问题的答案是错的吧?2. mysql 能不能创建一个 有列级函数 的联合视图?3. PhpStudy8.0 CPU过高4. python - pig latin问题 总是出现list/string index out of range5. 安装mysql,完成时提示的是用户名root,在终端查看版本时显示的不是root,请问这怎么解决6. python - 如何解决程序运行太久之后被操作系统暂停的情况?7. 请教python编码风格和异常处理问题8. python - Pycharm调试代码进行列表遍历时,如何直接赋值指定元素9. html5 - 为什么浏览器可以显示HTML文档中未被定义的标签?10. javascript - 图片能在网站显示,但控制台仍旧报错403 (Forbidden)
排行榜

网公网安备