基本类型存储的是值而复杂数据类型也叫引用类型存储的是对象的地址如0x00001而在栈中存的是变量数值和函数参数

堆中存的是对象和数组

堆栈空间分配

栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值局部变量的值等。其操作方式类似于数据结构中的栈。

堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。

堆栈缓存方式

栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放。

堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。

总结:基本的数据类型存储在栈中,先将变量的声明在内存中的栈开辟一片空间值是undefined,后将值赋给这片空间,执行步骤:

  1. var num;  //值是:undefined
  2. num = 10;
  3. var n;
  4. n = num;

先声明后赋值,当一个变量赋值的是另一个变量时,就会将那个变量的值赋给这个变量

复杂类型在内存中的存储:

总结:

  1. 在堆中存储的是对象,栈存储的是对象的地址
  2. new关键字,会在堆中生成一个空对象
  3. 对象的诞生,地址也会生成

实参和假参在内存中存储:

总结:在栈中声明,实参赋值后,给函数中的假参传递值

最新文章

  1. 基于AOP的MVC拦截异常让代码更优美
  2. mate标签
  3. 01-C#入门(分支控制语句)
  4. Oracle EBS Form Builder使用Java beans创建窗体
  5. 搭建Maven私服-续
  6. Huffman树与编码的简单实现
  7. 使用MyEclipse可视化开发Hibernate实例
  8. 基于 Redis 数据累计的实现
  9. 【转】MFC界面更新实现方法
  10. JavaScript 【非IE DOM2级XML】
  11. windows如何获取Win10 Win8 Win8.1版本
  12. Spring + Spring MVC + Hibernate项目开发集成(注解)
  13. C# IE代理操作
  14. SQL 脚本持续收集...
  15. 最简单的基于FFmpeg的封装格式处理:视音频复用器(muxer)
  16. LNMP shell
  17. 玩转PIL库
  18. Ubuntu使用(一)——常用命令与软件安装配置
  19. Impala Apache Hadoop 安装方法
  20. rpm 打包的时候 不进行strip

热门文章

  1. 数据库【mysql篇】典型的一些练习题目
  2. 网络流之P3254 圆桌问题
  3. 重写override
  4. SQL ALTER TABLE 语句
  5. 理解mysql执行多表联合查询
  6. lombook安装以及在eclipse和idea上配置
  7. Golang 入门系列(九) 如何读取YAML,JSON,INI等配置文件
  8. Spring+SpringMVC+Hibernate小案例(实现Spring对Hibernate的事务管理)
  9. jenkins集成python时出现"Non-ASCII character '\xe6' in file"错误解决方法
  10. spring boot 表单验证