内存分配

java程序运行在JVM(java virtual machine)上

  • 栈内存:局部变量
    1)基本数据类型的值
    2)类的实例
    定义在方法中的变量,使用完毕会立即消失

  • 堆内存:new出来的内容(实体、对象)

每一个new出来的内容都有一个地址值,使用完毕会在垃圾回收器空闲时回收
在这里插入图片描述

  • 常量池
    在jvm中,每个类型都有自己的常量池,常量池是某类型所用常量的一个有序集合,包括直接常量(基本类型,String)和对其他类型、字段、方法的符号引用。

java常量池技术

jvm常量池

java常量
在这里插入图片描述

  • 基本类型和引用类型

int date = 9 直接在栈分配空间存储date对应的值9
Person p1 = new Person(“jerry”,12) 在栈中分配一块内存,存放一个指向堆区p1对象的指针

基本类型:byte、short、char、int、long、boolean 存储在栈中
基本类型的包装类:Byte、Short、Character、Integer、Long、Boolean 存储在堆中

小结
  1. Person p1 = new Person p1是实例,实例存放在栈中,对象在堆中;操作实例本质上是通过实例的指针间接操作对象,多个实例可以指向同一个对象
  2. 方法结束,栈中的局部变量会立即销毁,堆中对象不一定会销毁,会在垃圾回收器空闲的时候销毁。可能有其他变量也指向了此对象
  3. 每一个应用程序都对应唯一的JVM实例,每个JVM都有自己的内存区域
  4. 类的成员变量在不同对象中各不相同,都有自己的存储空间,成员变量在堆中对象里。
  5. 类的方法是该类所有对象共享的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值