JVM、字节码、垃圾收集器和计算机代码解释(使用多次返回"new Object()"的函数)
JVM, bytecode, garbage collector and code interpretation by computer (using function which returning "new Object()" many times)
所以我想确定(隐藏的部分是我喜欢干净的代码)
当我只使用一次变量时,我可以创建一个方法:
private List<Example> getExampleList() {
return Example.getInstance().getList();
}
问题:
如果我只使用一次,这相当于:
private List<Example> exampleList = Example.getInstance().getList();
如果我多次使用我的方法而不是创建一个存储这些数据的变量,会有什么后果?即使在没有理由更改值的情况下,java
是否会加载值并 return 它?
声明和使用方法有什么区别?
这取决于Example.getInstance().getList()
是否创建新对象:
- 如果每次都创建一个内容不同的新对象,你不应该将第一个结果存储到变量中。
- 如果它每次都创建一个具有相同内容的新对象(等价对象),您可以将第一个返回的对象存储到一个变量中并从那时起重用它而不是调用
getList
。它将产生更少的调用,更少无用的对象,从而提高吞吐量。
- 如果它不创建新对象但始终returns相同的引用,则与第 2 点相同。
所以我想确定(隐藏的部分是我喜欢干净的代码)
当我只使用一次变量时,我可以创建一个方法:
private List<Example> getExampleList() {
return Example.getInstance().getList();
}
问题:
如果我只使用一次,这相当于:
private List<Example> exampleList = Example.getInstance().getList();
如果我多次使用我的方法而不是创建一个存储这些数据的变量,会有什么后果?即使在没有理由更改值的情况下,
java
是否会加载值并 return 它?声明和使用方法有什么区别?
这取决于Example.getInstance().getList()
是否创建新对象:
- 如果每次都创建一个内容不同的新对象,你不应该将第一个结果存储到变量中。
- 如果它每次都创建一个具有相同内容的新对象(等价对象),您可以将第一个返回的对象存储到一个变量中并从那时起重用它而不是调用
getList
。它将产生更少的调用,更少无用的对象,从而提高吞吐量。 - 如果它不创建新对象但始终returns相同的引用,则与第 2 点相同。