java虚拟机,一些变量的说明

深入了解虚拟机

    1.虚拟机的主要组成结构
  虚拟机主要是由执行引擎和类加载器构成

2.虚拟机进程
  当我们执行某个类的main方法时,就会开启一个jvm   的进程,
  jvm的进程可以有多个,jvm进程是不能共享的,
  一个应用程序就对应着一个独立的jvm进程,进程和进程之间是相互不干扰的

3.虚拟机的生命周期
  main方法的开始就代表着jvm进程的开始,直到main  方法的结束,jvm进程也就随之销毁

4.虚拟机的内存分配
  当一个jvm运行起来的时候会将内存划分为三个主要部分

  1)栈
    栈内存主要存放的是java的局部变量(包括基本数据类型和引用类型)
也就是方法体里声明的变量,以及方法声明的参数.当方法开始执行时,
所需的局部变量就会入栈参与运算,当方法结束的时候,所有的局部变量都会自动销毁

  2)堆
    只要是通过new关键字创建出来的对象都存放在堆当中,
    堆中的对象又存放 着这个类所定义的实例变量,
    不同的实例之间他们的实例变量是相互不影响的.
    当在堆里创建了一个对象的时候,
    同时会在栈中存放一个引用指向堆中的这个对象的首地址.
    如果堆中的对象没有引用指向它的时候,那么这个对象就会成为垃圾对象,
    等待jvm的垃圾自动回收 

  3)方法区
    方法区主要存放了class的所有描述信息,
    比如类或接口的访问修饰符,类名,成员属性(包括属性的访问修饰符,属性名等等),
    成员方法(包括普通方法和静态方法,以及方法的访问修饰符,方法返回值等等)
    方法区在运行时有可以划分几个子区域,常见的有:
    1)静态存储区
      主要存放静态变量(类变量)以及静态代码块
    2)常量池
      常量池通常用一个常量项表来维护不同类型的常量池,
      常见的有字符常量池(主要用于存放字符常量)

变量的说明

  全局变量:也叫成员变量,是指在类中定义的变量,
 它在整个类中都有效。
 全局变量又可分为:类变量和实例变量

 1.类变量:又叫静态变量,用static修饰,它可以直接用类名调用 ,
  也可以用对象调用 , 而且所有对象的同 一个类变量都是共享同一块内存空间。


  2.实例变量:不用static修饰, 它只能通过对象调用,
   而且所有对象的同一个实例变量是共享不同的内存空间的。

            3. 局部变量:是指那些在方法体中定义的变量以及方法的参数  它只在定义它的方法内有效。

成员变量和局部变量的区别:
1.
成员变量定义在类中,整个类中都可以访问
局部变量定义在函数,语句,局部代码块中,只在所属的区域有效

2,
成员变量存在于堆内存的对象中。
局部变量存在于栈内存的方法中。

3,
成员变量随着对象的创建而存在,随着对象的消失而消失。
局部变量随着所属区域的执行而存在,随着所属区域的结束而释放。

4,
成员变量都有默认初始化值
局部变量没有默认初始化值

误区提醒

 平时我们在new出一个对象的时候,我们不是给图纸赋值,而是给具体的事物赋值

 在java代码中的体现就是,我们不是给class中的属性赋值,而是给堆内存中的new出来的具体事物赋值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值