java按值传递和内存和cpu利用率

标签 java

我有一个 C 语言背景,我有一个非常基本的问题:传递更大数据类型(如字符串数组)的值是否会调用类似 java 中的复制构造函数的东西。

因此,这段代码会通过在 list2 中复制列表而导致在内存中创建重复列表。 因此内存和 CPU 利用率翻倍。

String[] getList() {
    String[] list = new String...
    ...
    return list;
}

String [] list2 = getList();

我的假设是否正确?如果是,是否有替代方案,例如在 C 中传递指针。

PS:如果我们让垃圾收集器完成清理额外内存的工作,这将不会是另一组 cpu 循环使用清理内存的循环,这些内存最初不应该被创建。

最佳答案

不,它不会使内存和 CPU 使用率加倍。在 Java 中,所有非基本类型都存储为引用,并且这些引用按值传递。

因此在您的示例中,getList 方法将在堆上构造一个数组并返回对该数组的引用。不涉及数组复制;只是一个引用副本。

关于java按值传递和内存和cpu利用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16746239/

相关文章:

java - 消息传递代理和缓冲区

java - 使用子类的静态成员类参数化父类(super class)

java - SwingX JX表 : use ColorHighlighter to color rows based on a "row object"

Java 信号量停止线程

java - 如何在J2ME中无需单击按钮即可激活功能键?

java - 转换两个枚举两个一组

java - 使用 Jackson 将 Json 映射到 Java POJO

java - 如何在 JAX-WS 客户端中设置 SOAP header

Java 作用域和生命周期(内部类)

java - 我尝试从 POSTMAN API 工作正常,但从我的 Java 代码不行?