值类型相关函数与对象类型相关函数内存调用过程

简介: 值类型相关函数与对象类型相关函数内存调用过程

值类型相关函数内存调用:

先来看这样一段代码,你认为它的运行结果是多少呢?

20和11还是20和10?

package org.example;
public class Main {
    public static void main(String[] args) {
        int a=10;
        add(a);
        System.out.println(a);
    }
    public static void add(int a){
        int b=10;
        System.out.println(a+b);
        a=11;
    }
}

答案是20和10,如果你猜对了请先不要窃喜,不妨继续往下看,检测一下自己是真的会还是仅仅猜对了

在Java中局部变量最终会被放在栈中,如下所示:

当add方法执行完毕,会将add方法所占用的栈的空间删除掉,如下所示:

因此最终输出的a的值其实是main函数中的a的值

对象类型相关函数内存调用:

Java的基础数据类型都是值类型,指针也是值类型,因而是直接存到内存,不是存地址去寻址

add函数执行完毕,左侧栈所占用的内存就会被释放掉,但是右边堆所占用的内存并不会被随着函数调用结束而清空,因为我们无法确定是否还有其他的线程也引用堆中的对象,而需要使用GC垃圾回收机制完成

相关文章
|
4天前
10分钟让你学会内存函数:memcpy,memmove,memset,memcmp的用法及模拟实现。
10分钟让你学会内存函数:memcpy,memmove,memset,memcmp的用法及模拟实现。
10 2
|
19天前
|
存储 C语言
C语言学习记录——动态内存函数介绍(malloc、free、calloc、realloc)
C语言学习记录——动态内存函数介绍(malloc、free、calloc、realloc)
23 1
|
5天前
|
C语言
字符串和内存函数(1)
字符串和内存函数(1)
21 7
|
1天前
|
C语言
【C语言】:4大内存函数
【C语言】:4大内存函数
6 2
|
5天前
字符串和内存函数(2)
字符串和内存函数(2)
21 5
|
11天前
|
安全 C语言
【C语言基础】:内存操作函数
【C语言基础】:内存操作函数
|
14天前
|
运维 Serverless Nacos
Serverless 应用引擎产品使用合集之在访问量过大的情况下,函数配置的cpu和内存会自动扩容吗
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
1天前
|
C语言
【C语言】:动态内存管理函数malloc,calloc,realloc和free的介绍的介绍
【C语言】:动态内存管理函数malloc,calloc,realloc和free的介绍的介绍
8 0
|
1天前
|
C语言
C语言内存函数
C语言内存函数
2 0
|
4天前
|
C语言 C++
C语言----C语言内存函数
C语言----C语言内存函数