Java for循环内的引用类型变量声明
让我们有一个学生班。形成我们知道的以下代码片段(Java)——Java for循环内的引用类型变量声明,java,variables,optimization,jvm,variable-declaration,Java,Variables,Optimization,Jvm,Variable Declaration,让我们有一个学生班。形成我们知道的以下代码片段(Java)—— Student aStudent = new Student(); 创建了“Student”类型引用变量 使用“new Student()”创建了一个“Student”对象 对象被分配了引用变量“aStudent” 到目前为止,我知道,每次编写“new Student()”时,都会创建一个新对象,并为新创建的对象分配一个内存空间。但有时我们在for循环中写这样的东西- for ( int i=0; i<10000; i++)
Student aStudent = new Student();
for ( int i=0; i<10000; i++) {
Student student = new Student();
...
...
...
}
for(int i=0;i1.JVM是否创建了10000次Student的新对象?或者在幕后进行任何优化以节省内存
是。将创建10000个学生对象。最后,所有10000个学生对象都无法访问,因为所有对象和引用都将超出范围(是的,将创建10000个引用。每个对象1个)。所有对象和引用(命名学生)都将超出范围,并准备好进行GC
2.如果发生任何优化,那么它是如何完成的?我如何知道for循环中实际创建的对象的数量
我不知道编译器在这种情况下会进行任何优化。但我知道的是,如果您使用codePro之类的静态代码分析工具,它会将此代码标记为警告。即,您不应该在循环中创建对象。1.JVM会创建10000次Student的新对象吗?或者任何优化都是在幕后进行的节省内存
是。将创建10000个学生对象。最后,所有10000个学生对象都无法访问,因为所有对象和引用都将超出范围(是的,将创建10000个引用。每个对象1个)。所有对象和引用(命名学生)都将超出范围,并准备好进行GC
2.如果发生任何优化,那么它是如何完成的?我如何知道for循环中实际创建的对象的数量
我不知道编译器在这种情况下会进行任何优化。但我知道的是,如果您使用codePro之类的静态代码分析工具,它会将此代码标记为警告。即,您不应该在循环中创建对象。1.JVM会创建10000次Student的新对象吗?或者任何优化都是在幕后进行的节省内存
是。将创建10000个学生对象。最后,所有10000个学生对象都无法访问,因为所有对象和引用都将超出范围(是的,将创建10000个引用。每个对象1个)。所有对象和引用(命名学生)都将超出范围,并准备好进行GC
2.如果发生任何优化,那么它是如何完成的?我如何知道for循环中实际创建的对象的数量
我不知道编译器在这种情况下会进行任何优化。但我知道的是,如果您使用codePro之类的静态代码分析工具,它会将此代码标记为警告。即,您不应该在循环中创建对象。1.JVM会创建10000次Student的新对象吗?或者任何优化都是在幕后进行的节省内存
是。将创建10000个学生对象。最后,所有10000个学生对象都无法访问,因为所有对象和引用都将超出范围(是的,将创建10000个引用。每个对象1个)。所有对象和引用(命名学生)都将超出范围,并准备好进行GC
2.如果发生任何优化,那么它是如何完成的?我如何知道for循环中实际创建的对象的数量
我不知道编译器在这种情况下会进行任何优化。但我知道的是,如果您使用codePro之类的静态代码分析工具,它会将此代码标记为警告。也就是说,您不应该在循环中创建对象。很抱歉,如果这个答案不准确,因为我对Java比较陌生
据我所知,将创建10000个对象,但其中只有1个对象符合垃圾收集条件,因为没有任何对象指向其他对象
垃圾收集器是唯一在幕后进行的优化,但是不能直接调用它,但是您可以通过简单地将对象设置为null来建议垃圾收集对象,即:student=null;
如果这个答案不准确,很抱歉,因为我对Java相对较新
据我所知,将创建10000个对象,但其中只有1个对象符合垃圾收集条件,因为没有任何对象指向其他对象
垃圾收集器是唯一在幕后进行的优化,但是不能直接调用它,但是您可以通过简单地将对象设置为null来建议垃圾收集对象,即:student=null;
如果这个答案不准确,很抱歉,因为我对Java相对较新
据我所知,将创建10000个对象,但其中只有1个对象符合垃圾收集条件,因为没有任何对象指向其他对象
垃圾收集器是唯一在幕后进行的优化,但是不能直接调用它,但是您可以通过简单地将对象设置为null来建议垃圾收集对象,即:student=null;
如果这个答案不准确,很抱歉,因为我对Java相对较新
据我所知,将创建10000个对象,但其中只有1个对象符合垃圾收集条件,因为没有任何对象指向其他对象
垃圾收集器是唯一在后台进行的优化,但是不能直接调用它,但是您可以通过简单地将对象设置为null来建议垃圾收集对象,即:student=null;
,这意味着除了activ之外,所有先前创建的student对象都可以用于垃圾收集e一个?不。学生在for循环外不可见。所以,所有10000个对象