正解,在JVM里面GC是一条优先级非常低的thread,调用时机一般是在heap要快满了或者当前java进程闲的蛋疼的时候,但可以调整GC的频率 我是问System.gc()是不是当前对象调用的?并且只对当前对象执行垃圾回收。 public class A { public static void main(String[] args) { new A(); new A (); System.gc(); }} 执行了System.gc();后系统是不是只进行A对象的回收?影响不到别的类对象吗?哪怕有另外的java类对象(比如有个B类的对象也在运行)已经成为垃圾。
正解,在JVM里面GC是一条优先级非常低的thread,调用时机一般是在heap要快满了或者当前java进程闲的蛋疼的时候,但可以调整GC的频率 我是问System.gc()是不是当前对象调用的?并且只对当前对象执行垃圾回收。 public class A { public static void main(String[] args) { new A(); new A (); System.gc(); }} 执行了System.gc();后系统是不是只进行A对象的回收?影响不到别的类对象吗?哪怕有另外的java类对象(比如有个B类的对象也在运行)已经成为垃圾。[/quote 不是回收某个对象,而是回收系统中用不到的对象,而且虽然调用System.gc()之后,但是并不代表立即执行,而是当某个不确定的时候才执行,如果要让某个对象被回收掉,可以将这个对象置为null,如 A a = null,这样GC就会去回收a,但是具体在什么时候执行就不知道了
是程序员手动调用的,这只是给jvm提个醒而已,告诉他该回收垃圾了,但是jvm什么时候真的去回收垃圾,我们就没有办法控制了。
正解,在JVM里面GC是一条优先级非常低的thread,调用时机一般是在heap要快满了或者当前java进程闲的蛋疼的时候,但可以调整GC的频率
正解,在JVM里面GC是一条优先级非常低的thread,调用时机一般是在heap要快满了或者当前java进程闲的蛋疼的时候,但可以调整GC的频率
我是问System.gc()是不是当前对象调用的?并且只对当前对象执行垃圾回收。
public class A {
public static void main(String[] args) {
new A();
new A ();
System.gc();
}}
执行了System.gc();后系统是不是只进行A对象的回收?影响不到别的类对象吗?哪怕有另外的java类对象(比如有个B类的对象也在运行)已经成为垃圾。
正解,在JVM里面GC是一条优先级非常低的thread,调用时机一般是在heap要快满了或者当前java进程闲的蛋疼的时候,但可以调整GC的频率
我是问System.gc()是不是当前对象调用的?并且只对当前对象执行垃圾回收。
public class A {
public static void main(String[] args) {
new A();
new A ();
System.gc();
}}
执行了System.gc();后系统是不是只进行A对象的回收?影响不到别的类对象吗?哪怕有另外的java类对象(比如有个B类的对象也在运行)已经成为垃圾。[/quote
不是回收某个对象,而是回收系统中用不到的对象,而且虽然调用System.gc()之后,但是并不代表立即执行,而是当某个不确定的时候才执行,如果要让某个对象被回收掉,可以将这个对象置为null,如 A a = null,这样GC就会去回收a,但是具体在什么时候执行就不知道了