在Java中将大对象作为参数传递是否效率低下?

rth*_*sen 31 java performance

比方说,我有一个类A,它创建一个相当大的对象B的实例.是否将B作为参数传递给C类中的方法效率低下?

也就是说,它只是传递一个引用还是它也会移动对象的内存?

谢谢.

Jon*_*eet 62

它只是传递参考.重要的是要理解Java 中任何表达式的值永远不是对象.这只是曾经引用或原始值.

这不仅与参数传递相关 - 理解返回类型,数组,简单赋值等很重要.

  • @vardin 最好传递一个大对象而不是多个小参数 (2认同)
  • @ACV我希望几年前知道这一点。我的代码审阅者要求我重新编写整个代码,只是因为我将批量对象传递给了一个函数(我是一个较新的函数),在她的想法中,该函数每次都会创建一个新的对象克隆。 (2认同)

Joa*_*uer 14

Java只能将两种值传递给方法:

  • 原始值(int,char,double,...)或
  • 对象引用

你无法"按价值"传递整个对象.

这意味着你不必担心你的物体"有多大",你"绕过".


van*_*nje 7

它效率不高,因为只有对象引用传递给方法.


use*_*812 5

只要您的调用是本地的(相同的JVM)对象大小无关紧要,但是当您的应用程序使用远程调用(如RMI/Web Service)(跨JVM)时,大型对象能够在很大程度上减慢您的应用程序因为巨大的将被编组/解组的数据量以及每个远程调用所涉及的网络延迟.