千锋教育-做有情怀、有良心、有品质的IT职业教育机构

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

时间:2018-03-02 15:14:53  |  来源:千锋教育郑州校区  |  作者:

   所谓JVM,即Java Virtual Machine(Java虚拟机)的缩写。众所周知,Java语言的一个非常重要的特点就是与平台的无关性,而Java虚拟机是实现这一特点的关键。Java虚拟机有自己完善的硬体架构,屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

  作为Java的基础知识,很多企业在面试时会提问求职者Java虚拟机的一些知识:

  1、Java虚拟机为新生对象分配内存有哪两种方式?

  答:指针碰撞和空闲列表。Java虚拟机采用哪种方式为新生对象分配内存,取决于所使用的垃圾收集器,当垃圾收集器具有整理过程时,虚拟机将采用指针碰撞的方式;当垃圾收集器的回收过程没有整理过程时,则采用空闲列表方式。

Java虚拟机.png

  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中存储的是稳定的句柄地址,使用直接指针访问的大好处就是速度快,节省了一次指针定位的时间开销。

千锋<a href=http://zz.mobiletrain.org/ target=_blank class=infotextkey><a href=http://zz.mobiletrain.org/ target=_blank class=infotextkey>郑州java培训</a></a>课程.jpg

  千锋Java培训课程覆盖广泛的知识点,选择机会多的互联网行业进行项目实训,并结合当下吸金的互联网金融项目定期优化课程,因此学员可以学习新潮流的Java开发技术;除了可以满足企业需求的基本技术课程之外,学员还可通过千锋录制的“专业技能提升”视频课程进行拔高学习。如果你想快速加入Java开发行列,那就赶快加入千锋郑州java培训班。

新开班

  • ▪ JavaEE培训班 05.07 抢座
  • ▪ Python培训班 04.23 抢座
  • ▪ UI交互设计培训 04.16 抢座
  • ▪ HTML5培训班 04.09 抢座
  • ▪ Python培训班 03.26 抢座
  • ▪ HTML5培训班 03.12 爆满
  • ▪ JavaEE培训班 03.26 爆满
  • ▪ Python培训班 02.26 爆满
  • ▪ JavaEE培训班 01.22 开班
  • ▪ HTML5培训班 12.25 开班
  • 郑州地址:郑州市二七区航海中路60号海为科技园C区10层、12层
    咨询电话:0371-55911950 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 北京天丰利校区:北京市海淀区宝盛北里西区28号天丰利商城4层
    北京沙河校区:北京市昌平区沙阳路18号北京科技职业技术广场服务楼2层、南区服务楼2层
    咨询电话:400-654-7778 010-82790226-801
    面授课程:iOS培训、Android培训、HTML5培训、UI培训、PHP培训、JavaEE培训、好程序员
  • 深圳科技园校区:深圳市南山区科苑南路高新技术产业园R3-B栋5层
    深圳大学城校区:深圳市南山区留仙大道1201号大学城创客小镇16栋2楼、3楼
    深圳西部硅谷校区:深圳市宝安区宝安大道5010号西部硅谷B座A605-619
    咨询电话:0755-86681178/9-801
    面授课程:iOS培训、Android培训、HTML5培训、UI培训、PHP培训、JavaEE培训、好程序员
  • 上海地址:上海市宝山区同济支路199号智慧七立方3号楼2-4层
    咨询电话:400-627-7899 021-65025129-602
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训、好程序员
  • 成都旅游校区:成都市一环路西二段17号四川旅游青羊校区内
    成都华立校区:成都一环路西二段17号华立大厦3楼
    咨询电话:028-83178771 028-61967740
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 广州地址:广州市天河区元岗路310号智汇park创意园E座5层
    咨询电话:020-22119207 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 大连地址:大连市甘井子区软件园路2号B8座二楼
    咨询电话:0411-39026086 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 武汉地址:武汉市东新区光谷大道77号金融港B26栋9楼
    咨询电话:027-59905909 027-59905908 027-59905902
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 西安南二环校区:西安市二环南路西段60号永安大厦4层
    西安科技园校区:西安市雁塔区高新六路52号立人科技园C座西区4层
    咨询电话:029-85260160 029-85261030 029-85260960
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 杭州地址:浙江省杭州市江干区九堡旺田书画城A座4层
    咨询电话:0571-86893632 010-82790226/7-801
    面授课程:iOS课程培训、Android课程培训
  • 青岛校区地址:青岛市市南区金坛路17号青岛职业技术南校区实训楼A4层
    咨询电话:0532-80910752/3 010-82790226/7-801
    面授课程:iOS课程培训、Android课程培训、UI课程培训
  • 千锋教育微信号
    扫描加好友