java - Java 中不分配返回值的非 void 方法调用

标签 java memory-management garbage-collection jvm

当调用非 void 方法而没有返回值的接收对象时,JVM 会做什么? 它只是在找不到接收者的那一刻销毁返回的对象?或者它让返回的对象由垃圾收集器管理?或者是其他东西?。例如:

public class PrincipalClass {
    public static void main(String[] args) {
        returnStringMethod();
    }
    public static String returnStringMethod() {
        return "Hello, Java world!";
    }
}

“Hello, Java world!”发生了什么?那个被退回了?什么时候销毁?

最佳答案

假设您点了一顿饭。饭菜装在一次性盒子里。你把食物拿出来,吃了。现在这些盒子对你来说毫无用处。你用它们做什么......?丢弃它们。 Java GC 也是如此。当任何对象没有通过任何对象引用,或者不可访问时,它会在下次触发 gc 时获取。查看此情况的一个好方法是打开 jvisualvm 并继续跟踪字符串文字,然后触发 gc。您会实时看到事物。

我希望这有帮助..!

关于java - Java 中不分配返回值的非 void 方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52101374/

相关文章:

Java 泛型为什么不起作用?

java - 无法解析符号 'v' 和预期的 ) 和 ;

java - UnsatisfiedLinkError : Couldn't load sinch-android-rtc from loader dalvik. 系统

java - int a; 之间的区别诠释乙;和 int a, b。 (关于内存管理)

java - HashMap<Integer, double[]> 相当于 trove 吗?

Java 垃圾收集器和字符串操作

.NET:大型堆对象何时被垃圾回收?

java - 在 Java 中如何查看哪些对象已被垃圾回收?

java - 找不到 JDK 来设置 JAVA_HOME 变量

java - 垃圾收集器与池