任何平台的JVM管理内存的方式是相同的
JVM如何管理内存:
程序运行前,JVM会向操作系统申请一块内存,然后加载运行JAVA程序,如果不够,就继续申请新内存,直到运行成功或达到内存上限(默认64M)。
内存会划分为几个逻辑区域
- 堆
占内存最多
存放:对象,引用类型的数据,new创建的对象,只包含对象的属性
- 栈
内存最小
先进先出
存放:变量,基本型:变量的值 引用型:内存地址
- 元空间(方法区)
存放类结构(类的属性和方法),static变量
普通方法和静态方法都存放在这里
普通方法和静态方法区别在于调用的方式不同:
普通方法要通过对象名.方法名调用
静态方法要通过类名.方法名调用
总结:
栈里面存变量,对于基本型变量(8种)栈中存的是具体的值,对于引用型变量栈中存的是内存首地址
堆里存的是引用型的具体数值,包括对象数据和数组,
元空间存的是类结构,包括具体的静态变量和所有方法
Java没有指针,因为Java不能声明指针变量,但引用数据类型(类,接口,数组)封装了指针
声明对象:分配栈内存,类似指针类型变量
创建对象:分配堆内存,存储具体值
只有引用型才有声明与创建
值传递:基本类型采用值传递
引用传递:引用数据类型采用引用传递
值栈:
调用方法会生成值栈内存空间
方法调用开始创建,方法调用自动消亡
存储数据:形参变量 方法内声明的局部变量
垃圾回收线程
回收堆内存
何时运行:
- 内存不够用的时候
- 系统资源闲置
- 使用System.gc建议垃圾回收线程运行
当堆内存没有任何指向它的引用
标签:调用,Java,变量,管理,引用,指针,方法,内存 From: https://blog.csdn.net/weixin_75133275/article/details/141025151