JVM体系结构--堆

来源:互联网 发布:淘宝换购怎么设置 编辑:程序博客网 时间:2024/04/28 17:48

主要作用

储存java程序在运行时创建的所有类实例或者数组

主要特点

内存不连续;程序独占,互不干扰;线程共享,同步访问

主要技术

  • 垃圾回收
    程序只负责分配内存,回收内存需要jvm的垃圾收集器
  • 对象的表示
    所谓的对象,就是所属的类及其所有超类声明的实例变量组成,通过对象引用完成数据的快速定位,常用的两种表示法:
    • 句柄池+对象池表示法
      句柄池+对象池表示法
    • 直接表示法
      这种方式就是只使用一个指针,只由一个指向类数据的指针和实例数据构成。优点就是不需要两次指针传递,缺点就是对象的移动变得复杂
  • java的多态,上塑和下塑
    对象的引用改为之前类的超类,也就是向上转型称为上塑;反之,就为下塑。上塑是必然成立的,但下塑却不一定。通过instanceof可进行判定。
    这两种情况都是为多态服务的,因为在实际的程序中,使用某个实例都是进行的动态绑定。
  • 方法表
    方法表的主要作用是便于更快地访问到对象。类似于C++中的VTBL对象虚拟表(对象由实例对象和虚函数指针构成),JVM中使用的原理类似,但是考虑到内存,便将所有对象都放在一张表中。
  • 对象锁
    JVM中每个对象都有对象锁,为了进行多线程的同步
  • 数组的内部表示
    所有的具有相同维度和类型的数组都是用一个类的实例。数组类表示为”[I”表示为一个一维的int数组。数组的长度,数据和指向类数据的指针都保存在堆上
0 0
原创粉丝点击