>[success] # java 内存图
1. 计算机在运行的时候,不同程序都会运行自己进程,然后分配自己的内存空间,java 运行在jvm 中,jvm 在运行时候也会创建不同的内存分配
![](https://img.kancloud.cn/1f/da/1fda8ce1a15d2f7fb78e9b6a4b5760e9_562x419.png)
* 在jdk 8.0 之前堆和方法区在一起
![](https://img.kancloud.cn/83/a8/83a8b356ed771280ea0baadc49634369_552x503.png)
* 在JDK8开始,取消方法区,新增元空间。把原来方法区的多种功能进行拆分,有的功能放到了堆中,有的功能放到了元空间中。
![](https://img.kancloud.cn/63/65/6365e0cbf33ab9def363e774429adae2_516x467.png)
2. 以 jdk8.0 之前分析为例
* **方法区** 用来存放字节码文件加载时进入的内存存储空间,也就是存放 `.java` 文件存放为 `.class `文件
![](https://img.kancloud.cn/28/12/2812ead103f7d8a195ef47785b463612_326x212.png)
* **栈内存区** 方法运行时会进入栈区进行压栈等待执行,变量也是保存在这个空间中
* **堆内存** ,`new`来的东西会在这块内存中开辟空间并产生地址
3. 当创建对象时候会进行一下几步
* 加载`class`文件
* 申明局部变量
* 在堆内存中开辟一个空间
* 默认初始化
* 显示初始化
* 构造方法初始化
* 将堆内存中的地址值赋值给左边的局部变量
>[danger] ##### 分析案例
数据各自属于所创建的对象,方法共享(减少内存)
![](https://img.kancloud.cn/be/75/be75c2a63643fb35fb81d0f09bd1b377_1650x719.png)
- windows -- 环境变量
- Vscode -- 编写java
- 初始java
- java -- 关键字
- 编写第一个java程序
- java -- 注释
- 计算机存储 -- 进制
- java -- 类型
- java -- 变量
- 数字类型
- 布尔类型
- 字符类型
- 类型转换
- 双等比较是什么
- java -- 运算符
- 算数运算符
- 字符串拼接
- 关系/比较运算符
- 自增减运算符
- 逻辑运算符
- 三目运算
- 赋值运算符
- 移位运算符
- 位运算符
- 运算符优先级
- java -- 流程控制语句
- if /else if /if -- 判断
- switch case分支结构
- for -- 循环
- 用双重for循环
- while -- 循环
- do while -- 循环
- 案例练习
- java -- 数组
- 数组的存储
- 数组的增删改查
- 数组的特点
- 数组案例
- 二维数组
- 数组的工具方法
- java -- 方法
- java -- 方法的重载
- java -- 方法的调用流程
- java -- 类方法传参注意事项
- java -- 方法练习案例
- 对比 return break continue
- for each循环
- java -- 基础练习
- java -- 面向对象
- java -- 创建类和对象
- java -- 访问控制符
- java -- 类成员方法
- java -- 构造方法
- java -- this
- java -- 封装
- java -- 对象内存图
- java -- 创建对象案例
- java -- static
- java -- 继承
- super -- 关键字
- java -- 构造块和静态代码块
- java -- 重写
- java -- final
- java -- 多态
- java -- 抽象类
- java -- 接口
- 引用类型数据转换
- 综合案例
- java -- 内部类
- java -- 回调模式
- java -- 枚举类型
- java -- switch 使用枚举
- java -- 枚举方法使用
- java -- 枚举类实现接口
- java -- javaBean
- java -- package 包
- java -- import
- java -- 递归练习
- java -- 设计模式
- 单例模式
- java -- 注解
- java -- 元注解
- Java -- 核心类库
- java -- 处理字符串
- Java -- String
- String -- 常用方法
- String -- 正则
- Java -- StringBuilder 和 StringBuffer
- 知识点
- Java -- StringJoiner 字符串拼接
- 练习题
- 字符串的总结
- Java -- 包装类
- Integer
- Double
- Boolean
- Character
- java -- 集合类
- java -- util.Collection
- Iterator接口
- java -- util.List
- java -- ArrayList
- java -- util.Queue
- java -- util.Set
- java -- util.Map
- java -- util.Collections
- Java -- Math
- Java -- java.lang
- Java -- Object
- Java -- 获取当前时间戳
- Java -- 异常
- Java -- java.util
- java -- Date
- java -- Calender
- Java -- java.text
- Java -- SimpleDateFormat
- Java -- java.time
- Java -- java.io
- java -- io.File
- java -- 泛型
- IDEA -- 用法