JVM体系结构--堆
2015-12-22 17:12
357 查看
主要作用
储存java程序在运行时创建的所有类实例或者数组主要特点
内存不连续;程序独占,互不干扰;线程共享,同步访问主要技术
垃圾回收程序只负责分配内存,回收内存需要jvm的垃圾收集器
对象的表示
所谓的对象,就是所属的类及其所有超类声明的实例变量组成,通过对象引用完成数据的快速定位,常用的两种表示法:
句柄池+对象池表示法
直接表示法
这种方式就是只使用一个指针,只由一个指向类数据的指针和实例数据构成。优点就是不需要两次指针传递,缺点就是对象的移动变得复杂
java的多态,上塑和下塑
对象的引用改为之前类的超类,也就是向上转型称为上塑;反之,就为下塑。上塑是必然成立的,但下塑却不一定。通过instanceof可进行判定。
这两种情况都是为多态服务的,因为在实际的程序中,使用某个实例都是进行的动态绑定。
方法表
方法表的主要作用是便于更快地访问到对象。类似于C++中的VTBL对象虚拟表(对象由实例对象和虚函数指针构成),JVM中使用的原理类似,但是考虑到内存,便将所有对象都放在一张表中。
对象锁
JVM中每个对象都有对象锁,为了进行多线程的同步
数组的内部表示
所有的具有相同维度和类型的数组都是用一个类的实例。数组类表示为”[I”表示为一个一维的int数组。数组的长度,数据和指向类数据的指针都保存在堆上
相关文章推荐
- MPAndroidChart 教程:图表的具体设置 Specific chart settings(六)
- Android 6.0 运行时权限处理
- linux vmstat命令总结
- Hive中SQL的优化技巧
- 第一部分: 大数据治理统一流程模型概述和明确元数
- jq 指定单选框 选择
- 致我们终将绽放的渠道部
- Touch ID身份认证
- 第一节jdk1.6+tomcat6搭建方法
- Activity经典实例:启动其他Activity并使用Bundle存储数组返回结果
- Mybatis - SqlMapConfig.xml , 输入映射 ,输出映射 ,动态sql ,sql片段
- 第二部分:元数据集成体系结构
- Git命令使用小结
- 老李推荐:第1章3节《MonkeyRunner源码剖析》概述:架构
- 一些兼容问题
- sublime3+quick3.5 完整使用教程
- SharedPreferences保存arraylist集合
- java创建http接口
- C# 多线程的自动管理(线程池)
- 关于检测手机内部存储的方法(以内置存储空间几乎为0M时添加联系人为例)