文章详情页
关于Java垃圾回收问题
浏览:168日期: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. 关于Java引用传递的一个困惑?2. javascript - 小米浏览器中,图片导致fixed定位的元素无法显示3. 微信小程序可以用gulp,webpack吗?4. thinkphp5.1学习时遇到session问题5. mysql中的join on查询语句的on能否改为where6. java - yuicompressor-maven-plugin 合并可用却不压缩, 哪配置不对?7. javascript - 表单提交后,后台直接返回页面,应该如何处理?8. word-wrap该如何使用?9. javascript - 为什么!function foo(){}返回false,!function foo(){}()返回true?10. html - 特殊样式按钮 点击按下去要有凹下和弹起的效果
排行榜
