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

时间:2015-10-19 12:02:35

标签: java garbage-collection jvm bytecode

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

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

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

问题:

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

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

  2. 如果我多次使用我的方法而不是制作存储此数据的变量会产生什么后果?即使在没有理由让值发生变化的情况下,java会加载值并返回吗?

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

1 个答案:

答案 0 :(得分:2)

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

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