首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java通过值传递以及内存和cpu利用率

java通过值传递以及内存和cpu利用率
EN

Stack Overflow用户
提问于 2013-05-25 11:59:06
回答 2查看 119关注 0票数 4

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

那么,这段代码是否会通过复制list2中的列表来在内存中创建重复的列表。因此,内存和cpu利用率加倍。

代码语言:javascript
复制
String[] getList() {
    String[] list = new String...
    ...
    return list;
}

String [] list2 = getList();

我的假设正确吗?如果是这样的话,有没有类似于在C中传递指针的替代方法?

PS:如果我们让垃圾收集器来做清理额外内存的工作,这会不会是另一组cpu利用率,清理内存的周期,这本来就不应该被创建。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-25 12:05:52

不,它不会使内存和CPU使用率加倍。在Java中,所有非原语类型都存储为引用,这些引用是通过值传递的。

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

票数 5
EN

Stack Overflow用户

发布于 2013-05-25 12:03:29

否,不会复制数组的内容。相反,将传递指向堆上数组的引用。

Java没有指针,它有引用。在Java中,指向堆上对象的引用作为参数传递,并由方法返回。数组是Java中的对象,所以也是这样处理的。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16746239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档