JVM栈、堆分析

一.JVM概念

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。存在与jdk中。

二.JVM中内存分类

Ⅰ.栈区(stacksegment)
栈区(stacksegement)存放函数的参数值,局部变量的值等,在超过这个变量的作用域时就会被系统自动释放掉在于JVM内存的资源。
①优点:存取速度比堆快
②缺点:存在栈中的数据大小,与生存期必须是确定的,无灵活性
③存储类型:
a)基础类型 (int、double、float、char、string)
b)引用类型(需要new类创建对象)的变量
实例a:

forint i=0;i<43;i++){
        System.out.println(i);          //局部变量只作用在局部作用域中
}
System.out.println(i);                  //不打印输出i

实例b:

Scanner in=new Scanner(System.in);    //引用类型的变量in存储在堆内存中

Ⅱ.堆区(heapsegement)
堆区(heapsegement)存放由new创建的对象和数组,JVM不定时查看这个对象,如果没有引用指向这个对象就回收。
①优点:可以动态分配JVM内存
②缺点:要在运行时分配JVM内存;速度慢
实例:

Scanner in=new Scanner(System.in);    //如果in没有被引用就被回收

Ⅲ.静态区

Ⅳ.代码区

三.堆、栈示意图

Ⅰ.说明
a)图中如果int b=9;那么b、a指向同一个对象
b)引用类型的对象in存放在栈中,new出来的Scanner(System.in)存储在堆内存中。访问Scanner(System.in)路径:通过引用类型的对象in→指向Scanner(System.in)
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值