int 变量会否被gc()回收

iinbase 2012-09-07 11:14:22
RT
面试的时候 被问到这个问题
我知道 static 不会被回收, 但 int 等原始变量 比如 short long 等
...全文
665 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
meichen8050753 2013-01-04
  • 打赏
  • 举报
回复
int 不会被回收,在堆中的对象才会被回收
JPF1024 2013-01-01
  • 打赏
  • 举报
回复
引用 14 楼 zqfddqr 的回复:
出了作用域就没了吧
感觉这个靠谱一些。
wangyongtao_963 2013-01-01
  • 打赏
  • 举报
回复
错了 :超脱总结为21楼 sorry
wangyongtao_963 2013-01-01
  • 打赏
  • 举报
回复
超脱总结 14楼 bs :傻逼出个这个垃圾问题 赞15楼原理+耐心
iinbase 2012-09-13
  • 打赏
  • 举报
回复
大伙看了那篇文章没
aikaibo 2012-09-12
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 的回复:]

1 变量属于类,那么永远不会被回收
2 变量属于实例,则实例被回收才会被顺便回收
3 变量属于实例的方法,那么他是在堆栈中临时的,方法结束了,堆栈自动释放了,无需回收。
[/Quote]
学习啦...
赏金--猎人 2012-09-12
  • 打赏
  • 举报
回复
顶21楼!!!
iinbase 2012-09-11
  • 打赏
  • 举报
回复
http://yiliner.iteye.com/blog/207723
大伙都看看这文章吧
ZangXT 2012-09-11
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]

哪家 SB 公司问这种东西?
[/Quote]
你也这么彪悍。
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
基本类型变量和静态元素都是存在栈里的,但静态元素不会失去引用,而基本类型变量会失去引用。
[/Quote]
正解
ddplayer12 2012-09-11
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 的回复:]

1 变量属于类,那么永远不会被回收
2 变量属于实例,则实例被回收才会被顺便回收
3 变量属于实例的方法,那么他是在堆栈中临时的,方法结束了,堆栈自动释放了,无需回收。
[/Quote]

讲解的很透彻!
bigbro001 2012-09-10
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 的回复:]

1 变量属于类,那么永远不会被回收
2 变量属于实例,则实例被回收才会被顺便回收
3 变量属于实例的方法,那么他是在堆栈中临时的,方法结束了,堆栈自动释放了,无需回收。
[/Quote]
老紫竹才是真正的正解!!!
bigbro001 2012-09-10
  • 打赏
  • 举报
回复
楼上错了一大排,谁说int变量就一定是在栈里的?int类型的类成员变量跟对象一起保存在堆里!
老紫竹 2012-09-10
  • 打赏
  • 举报
回复
1 变量属于类,那么永远不会被回收
2 变量属于实例,则实例被回收才会被顺便回收
3 变量属于实例的方法,那么他是在堆栈中临时的,方法结束了,堆栈自动释放了,无需回收。
迷迷佛 2012-09-10
  • 打赏
  • 举报
回复
int类型变量是不会被GC回收的,只是JVM会管理栈,当因各种原因进行出栈操作时,这种类型变量会被自动释放。
QQ326237796 2012-09-10
  • 打赏
  • 举报
回复
不懂绑定咯
iinbase 2012-09-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

gc只会回收堆上的内存,栈里面情况完全不同,谈不上回收
[/Quote]

如果 一个类的里面的int 属性 , 那个类用完了 之后 那个int 会回收么 还是那个值不会回收?
  • 打赏
  • 举报
回复
哪家 SB 公司问这种东西?
旭子 2012-09-09
  • 打赏
  • 举报
回复
修正一下
gc只会回收java堆上的内存,java栈里面情况完全不同,谈不上回收,java堆和堆、java栈和栈分别是2个不同的概念。

另 楼主你想表述的意思是
class MyClass {
public static Object sObject = new Object();
};

sObject 这个引用的本体sObject本身被回收吧?它是不会被回收的,但是new Object()这个本体是可以被回收的,只要sObject被修改的引用或者sObject = null;时 它原先的引用的对象就会到java堆中被回收。
[Quote=引用 10 楼 的回复:]

gc只会回收堆上的内存,栈里面情况完全不同,谈不上回收
[/Quote]
jiakai0419 2012-09-09
  • 打赏
  • 举报
回复
这个应该是分情况吧。

如果这个int在堆那么有可能会被gc()回收。

如果在栈,那就不会被会gc()回收,会随着栈帧出栈而自然就被回收掉了。
加载更多回复(15)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧