java - JVM、字节码、垃圾收集器和计算机代码解释(使用多次返回 "new Object()"的函数)

标签 java garbage-collection jvm bytecode

所以我想确定一下(隐藏的部分是我喜欢干净的代码)

当我只使用一次变量时,我可以创建一个方法:

 private List<Example> getExampleList() {
    return Example.getInstance().getList();
 }

问题:

  1. 如果我只使用一次,这相当于:

    private List<Example> exampleList = Example.getInstance().getList();

  2. 如果我多次使用我的方法而不是创建一个变量来存储这些数据,会产生什么后果?会java即使在值没有理由更改的情况下也加载值并返回它?

  3. 声明和使用该方法有什么区别?

最佳答案

这取决于 Example.getInstance().getList() 是否创建新对象:

  1. 如果它每次创建一个具有不同内容的新对象,您不应将第一个结果存储到变量中。
  2. 如果它每次都会创建一个具有相同内容的新对象(等效对象),您可以将第一个返回的对象存储到一个变量中,并从那时起重复使用它,而不是调用 getList。它将产生更少的调用、更少的无用对象,从而提高吞吐量。
  3. 如果它不创建新对象但始终返回相同的引用,则与第 2 点相同。

关于java - JVM、字节码、垃圾收集器和计算机代码解释(使用多次返回 "new Object()"的函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33213901/

相关文章:

java - umlgraph 错误,找不到主类

java - 未触发地理围栏(广播接收器)

c# - 如何动态增加 C# 中固定数组的大小?

java - 如何从字符串从 Kotlin 类转换为接口(interface)/类?

java - 在命令行中分析正在运行的 Java 应用程序

java - 如何在 X 和 Y 轴上用实数绘制 jfree 折线图

java - Java/Android 中方法调用后测试参数值

c# - MediaPlayer 中的内存泄漏

java - Java/Tomcat/Solr 中的垃圾收集优化

java - 我在哪里可以找到有关 Sun 的 JVM 内部工作原理的信息?