×
新网 > 虚拟主机 > 正文

Java培训基础学习之Java虚拟机知识解析

  • 作者:新网
  • 来源:新网
  • 浏览:100
  • 2018-04-24 12:07:33

所谓JVM,即Java Virtual Machine(Java虚拟机)的缩写。众所周知,Java语言的一个非常重要的特点就是与平台的无关性,但是它们又是怎么扯上关系的呢?小编来为大家解答。

  20150619_8403fcf6dfb222b5192aXUt8c7bgg9Ko.jpg

<div>  所谓JVM,即Java Virtual Machine(Java虚拟机)的缩写。众所周知,Java语言的一个非常重要的特点就是与平台的无关性,但是它们又是怎么扯上关系的呢?小编来为大家解答。

  作为Java的基础知识,很多企业在面试时会提问求职者Java虚拟机的一些知识:
  1、Java虚拟机为新生对象分配内存有哪两种方式?
  答:指针碰撞和空闲列表。Java虚拟机采用哪种方式为新生对象分配内存,取决于所使用的垃圾收集器,当垃圾收集器具有整理过程时,虚拟机将采用指针碰撞的方式;当垃圾收集器的回收过程没有整理过程时,则采用空闲列表方式。
  2、Java虚拟机运行时数据区包括哪些?
  答:根据Java虚拟机规范的规定,虚拟机内存在Java程序运行时被分为程序计数器、Java虚拟机栈、本地方法栈、堆和方法区五个区域。
  3、Java虚拟机类加载的周期包括哪几个阶段?
  答:类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。
  4、Java虚拟机分配过程中如何解决线程安全?
  答:两种方式:1)对分配内存空间的动作进行同步处理——实际上虚拟机采用CAS配上失败重试的方式保证更新操作的原子性;2)把内存分配的动作按照线程划分在不同的空间之中进行,即每个线程在Java堆中预先分配一小块内存,称为本地线程分配缓冲(TLAB)。哪个线程要分配内存,就在哪个线程的TLAB上分配,只有TLAB用完并分配新的TLAB时,才需要同步锁定。虚拟机是否使用TLAB,可以通过-XX:+/-UseTLAB参数来设定。
  5、Java虚拟机对象在内存中如何布局?
  答:在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header)、实例数据(Instance Data) 和对齐填充(Padding)。
  6、Java虚拟机中主流的访问方式有哪几种?
  答:有使用句柄和直接指针两种。使用句柄访问的最大好处就是reference中存储的是稳定的句柄地址,使用直接指针访问的最大好处就是速度更快,节省了一次指针定位的时间开销。
 

免责声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,也不承认相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,请发送邮件至:operations@xinnet.com进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

免费咨询获取折扣

Loading