Java虚拟机结构学习
Java虚拟机结构学习
laohng1995 发表于11个月前
Java虚拟机结构学习
  • 发表于 11个月前
  • 阅读 6
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

1.数据类型:原始数据类型和引用数据类型

     1.1原始数据类型和值:

            Java虚拟机所支持的数据类型为数值类型,boolean类型,returnAddress类型。数值类型又分为整数和浮点数类型。整数类型包括:byte类型 8位有符号的二进制补码整数,默认值为0;short类型 16位有符号的二进制补码整数,默认值为0  int类型 32位有符号的二进制补码整数,默认值为0;long类型 64位有符号的二进制补码整数,默认值为0;char类型:16位无符号整数表示;float类型:单精度浮点整数集合;double类型是多精度浮点整数集合。    boolean类型:Java虚拟机中对boolean类型提供支持非常优有限,Java编译器把Java语言中的boolean类型值映射为int行的true=1,flase=0

     1.2引用数据类型和值:

         Java虚拟机中有三种引用类型:类类型。数组类型和接口类型。引用类型的值中有一个特殊的值是null,代表当前引用不指向任何一个对象

2.运行时数据区:

1.pc寄存器:Java虚拟机支持多线程同时执行,每一条Java虚拟机线程都会有自己的pc寄存器。pc寄存器是线程私有的。pc寄存器是用来记录字节码的行号。如果方法不是native的,那么pc寄存器保存Java虚拟机正在执行的字节码指令的地址,如果是native,则pc寄存器的值为undefined。Java虚拟机多线程是通过轮转切换分配处理器执行时间来实现的。当轮转到本线程时候,pc寄存器记录的行号开始执行。

2.Java虚拟机栈

Java虚拟机栈的作用与传统c语言的栈类似,用于存储局部变量还有一些未算好的解决。Java虚拟机栈是属于隔离线程部分,也就是线程私有,他的生命周期与线程的生命周期相同。他主要可分为:局部变量区、运行环境区、操作数区。Java虚拟机栈的结束方式主要用调用System.exit(),程序结束,或者出现问题和系统推出。局部变量区存储着各种基本数据类型(boolean,byte,shot,int,float,double)和引用类型(refrence)但是他不是对象本身,而是对象的起始地址的引用指针,也可能代表句柄或者和其他对象相关的地址,其中float,double类型是暂用两个局部内存空间。

3.Java堆:

堆是可供各个线程共享的内存区域,也是可供所有类实力和数组对象分配内存区域。Java堆在虚拟机启动的时候就被创建,他储存了垃圾收集器所管理的各种对象。堆中的垃圾收集器收集的方法有很多中。也有许多步骤。

首先我们要确定对象是否已经死亡。一般而言确定的方法有两种,第一种是引用记数法,基本原理是,在对象创建的时候伴随创建一个引用记数器,每一次引用对象给计数器加1,释放对象则减一,如果引用计数器为0的时候代表可以回收,据说python中的对象则使用这种方法标记,而Java中的标记则使用根搜索算法,

类如上图中(图片引用:http://www.cnblogs.com/gw811/archive/2012/10/19/2730258.html)

与GC Roots链接的object为不删除对象,未连接的标记删除。

早期的回收算法为:标记清除算法,顾名思义就是用搜索算法标记的需要被清除对象,在清除阶段进行清除。复制算法:用内存按容量分为大小相等的两块,每次只使用其中的一块,当这一块的内存用完了,就将还存活着的对象复制到另外一块内存上面,然后再把已使用过的内存空间一次清理掉。标记整理算法:该算法标记的过程与标记—清除算法中的标记过程一样,但对标记后出的垃圾对象的处理情况有所不同,它不是直接对可回收对象进行清理,而是让所有的对象都向一端移动,然后直接清理掉端边界以外的内存。

 

4 方法区:可供各线程共享的运行时内存区域。是堆的逻辑组成部分,但是不进行垃圾回收。方法区用于存储被记录虚拟机加载的类信息,常量,静态变量等数据。

 

5.本地方法栈:本地方法栈和虚拟机栈的作用非常相似,区别在于Java虚拟机栈为Java方法提供服务,而本地方法栈伟Native提供服务。Native的调用主要是方法中一些不有Java语音代码琐屑的,还有Java语言

5.直接内存:直接内存并不是虚拟机运行数据区中的一部分。但是在jdk1.4中新加入Nio类的时候引入一种基于管道与缓冲区的I/O联系方式。

 

共有 人打赏支持
粉丝 10
博文 32
码字总数 27788
×
laohng1995
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: