谈谈System.gc()的利与弊!

时间:2021-04-09 03:43:17
请各位老鸟说下这个方法的好出与坏处,什么情况用比较好!

21 个解决方案

#1


该回复于2009-06-08 14:13:53被版主删除

#2


顶一下, 了解不多, 不敢妄语

#3


一旦一个对象不被其他任何对象引用的时候,它就变成可回收的对象了。
你可以使用System.gc()来建议垃圾回收器收集垃圾,但是这并不能保证执行。

#4


继续等人来回答!

#5


好处就是 垃圾可以自动回收了
坏处就是 垃圾真的被回收了吗?

#6


不太了解 ,关注下

#7


标记下,希望有达人来给个详细的解释

#8


偶尔调用一下会优化内存,调用的太频繁会严重降低系统的执行效率。

#9


引用 8 楼 Mailbomb 的回复:
偶尔调用一下会优化内存,调用的太频繁会严重降低系统的执行效率。

请具体分析下!

#10


引用 5 楼 kingofvc 的回复:
好处就是 垃圾可以自动回收了 
坏处就是 垃圾真的被回收了吗?

既然不能保证垃圾真的被回收那这个方法存在的价值是什么

#11


引用 10 楼 Edwin603 的回复:
引用 5 楼 kingofvc 的回复:
好处就是 垃圾可以自动回收了 
坏处就是 垃圾真的被回收了吗? 


既然不能保证垃圾真的被回收那这个方法存在的价值是什么

 价值就是建议回收,给个建议而已!

#12


不建议手动调用垃圾回收机制,因为这个回收机制具有 不确定性。
建议让JVM自动管理。
使用者之需要设置JVM的堆栈大小就可以了,通过JVM的堆栈大小的调节,可以实现Java程序性能的调优,具体的可以Google一下。

#13


引用 12 楼 lierenzhifeng 的回复:
不建议手动调用垃圾回收机制,因为这个回收机制具有 不确定性。
建议让JVM自动管理。
使用者之需要设置JVM的堆栈大小就可以了,通过JVM的堆栈大小的调节,可以实现Java程序性能的调优,具体的可以Google一下。

同意

#14


引用 5 楼 kingofvc 的回复:
好处就是 垃圾可以自动回收了
坏处就是 垃圾真的被回收了吗?


确实

#15


public static void gc()运行垃圾回收器。 
调用 gc 方法暗示着 Java 虚拟机做了一些努力来回收未用对象,以便能够快速地重用这些对象当前占用的内存。当控制权从方法调用中返回时,虚拟机已经尽最大努力从所有丢弃的对象中回收了空间。 
从说明可以知道用gc()时要加大内存消耗,增加CPU负担.所以该方法一般在对内存需求比较大时,考虑该方法,一般情况下不要使用.根据目前的内存容量来看,该方法一般不用.

#16


引用 12 楼 lierenzhifeng 的回复:
不建议手动调用垃圾回收机制,因为这个回收机制具有 不确定性。 
建议让JVM自动管理。 
使用者之需要设置JVM的堆栈大小就可以了,通过JVM的堆栈大小的调节,可以实现Java程序性能的调优,具体的可以Google一下。

人生来有胳膊,因为他有用!如果人生来,上帝告诉他不建议你用胳膊,因为有不确定性!
那sun公司设计这个类的方法是否很多余?
我在想既然设计了!必然有用他的时候!我曾经想过如果我声称的对象里含有的内容如果很庞大,那当不用的时候,我是不是该用这个方法来主动的回收!
可是关键就是如果我对象很小那么该让jvm自动回收,可是楼上的这些解释我依然无法理解在用这个方法的时候,这个方法是如何给
jvm增加了多余的负担!这个过程我想了解下!

#17


不可靠的东西

#18


不怎么了解。

#19


其实Java中没有任何机制保证程序能强制执行垃圾回收,gc()不行,其他任何方法都不行。
调用gc()只能告诉jvm说,我想现在运行垃圾回收,而jvm究竟什么时间进行,那是jvm自己的事,程序无权干涉

#20


学习了 谢谢 

#21


引用 19 楼 luxing44530 的回复:
其实Java中没有任何机制保证程序能强制执行垃圾回收,gc()不行,其他任何方法都不行。 
调用gc()只能告诉jvm说,我想现在运行垃圾回收,而jvm究竟什么时间进行,那是jvm自己的事,程序无权干涉

.... 这个方法就是手动来回收和C++的思想一致! 汗死
你的说法实在难以认同!

#1


该回复于2009-06-08 14:13:53被版主删除

#2


顶一下, 了解不多, 不敢妄语

#3


一旦一个对象不被其他任何对象引用的时候,它就变成可回收的对象了。
你可以使用System.gc()来建议垃圾回收器收集垃圾,但是这并不能保证执行。

#4


继续等人来回答!

#5


好处就是 垃圾可以自动回收了
坏处就是 垃圾真的被回收了吗?

#6


不太了解 ,关注下

#7


标记下,希望有达人来给个详细的解释

#8


偶尔调用一下会优化内存,调用的太频繁会严重降低系统的执行效率。

#9


引用 8 楼 Mailbomb 的回复:
偶尔调用一下会优化内存,调用的太频繁会严重降低系统的执行效率。

请具体分析下!

#10


引用 5 楼 kingofvc 的回复:
好处就是 垃圾可以自动回收了 
坏处就是 垃圾真的被回收了吗?

既然不能保证垃圾真的被回收那这个方法存在的价值是什么

#11


引用 10 楼 Edwin603 的回复:
引用 5 楼 kingofvc 的回复:
好处就是 垃圾可以自动回收了 
坏处就是 垃圾真的被回收了吗? 


既然不能保证垃圾真的被回收那这个方法存在的价值是什么

 价值就是建议回收,给个建议而已!

#12


不建议手动调用垃圾回收机制,因为这个回收机制具有 不确定性。
建议让JVM自动管理。
使用者之需要设置JVM的堆栈大小就可以了,通过JVM的堆栈大小的调节,可以实现Java程序性能的调优,具体的可以Google一下。

#13


引用 12 楼 lierenzhifeng 的回复:
不建议手动调用垃圾回收机制,因为这个回收机制具有 不确定性。
建议让JVM自动管理。
使用者之需要设置JVM的堆栈大小就可以了,通过JVM的堆栈大小的调节,可以实现Java程序性能的调优,具体的可以Google一下。

同意

#14


引用 5 楼 kingofvc 的回复:
好处就是 垃圾可以自动回收了
坏处就是 垃圾真的被回收了吗?


确实

#15


public static void gc()运行垃圾回收器。 
调用 gc 方法暗示着 Java 虚拟机做了一些努力来回收未用对象,以便能够快速地重用这些对象当前占用的内存。当控制权从方法调用中返回时,虚拟机已经尽最大努力从所有丢弃的对象中回收了空间。 
从说明可以知道用gc()时要加大内存消耗,增加CPU负担.所以该方法一般在对内存需求比较大时,考虑该方法,一般情况下不要使用.根据目前的内存容量来看,该方法一般不用.

#16


引用 12 楼 lierenzhifeng 的回复:
不建议手动调用垃圾回收机制,因为这个回收机制具有 不确定性。 
建议让JVM自动管理。 
使用者之需要设置JVM的堆栈大小就可以了,通过JVM的堆栈大小的调节,可以实现Java程序性能的调优,具体的可以Google一下。

人生来有胳膊,因为他有用!如果人生来,上帝告诉他不建议你用胳膊,因为有不确定性!
那sun公司设计这个类的方法是否很多余?
我在想既然设计了!必然有用他的时候!我曾经想过如果我声称的对象里含有的内容如果很庞大,那当不用的时候,我是不是该用这个方法来主动的回收!
可是关键就是如果我对象很小那么该让jvm自动回收,可是楼上的这些解释我依然无法理解在用这个方法的时候,这个方法是如何给
jvm增加了多余的负担!这个过程我想了解下!

#17


不可靠的东西

#18


不怎么了解。

#19


其实Java中没有任何机制保证程序能强制执行垃圾回收,gc()不行,其他任何方法都不行。
调用gc()只能告诉jvm说,我想现在运行垃圾回收,而jvm究竟什么时间进行,那是jvm自己的事,程序无权干涉

#20


学习了 谢谢 

#21


引用 19 楼 luxing44530 的回复:
其实Java中没有任何机制保证程序能强制执行垃圾回收,gc()不行,其他任何方法都不行。 
调用gc()只能告诉jvm说,我想现在运行垃圾回收,而jvm究竟什么时间进行,那是jvm自己的事,程序无权干涉

.... 这个方法就是手动来回收和C++的思想一致! 汗死
你的说法实在难以认同!