网站大量收购独家精品文档,联系QQ:2885784924

java面试的重要知识点_JAVA面试核心知识点整理PDF下载.pdfVIP

java面试的重要知识点_JAVA面试核心知识点整理PDF下载.pdf

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

java⾯试的重要知识点_JAVA⾯试核⼼知识点整理PDF下载

主要内容:

2.JVM

(1)基本概念:

JVM是可运⾏Java代码的假想计算机,包括⼀套字节码指令集、⼀组寄存器、⼀个栈、

⼀个垃圾回收,堆和⼀个存储⽅法域。JVM是运⾏在操作系统之上的,它与硬件没有直接

的交互。

(2)运⾏过程:

121623125152125125

我们都知道Java源⽂件,通过编译器,能够⽣产相应的.Class⽂件,也就是字节码⽂件,

⽽字节码⽂件⼜通过Java虚拟机中的解释器,编译成特定机器上的机器码。

也就是如下:

①Java源⽂件—-编译器—-字节码⽂件

②字节码⽂件—-JVM—-机器码

每⼀种平台的解释器是不同的,但是实现的虚拟机是相同的,这也就是Java为什么能够

跨平台的原因了,当⼀个程序从开始运⾏,这时虚拟机就开始实例化了,多个程序启动就会

存在多个虚拟机实例。程序退出或者关闭,则虚拟机实例消亡,多个虚拟机实例之间数据不

能共享。

2.1.线程

这⾥所说的线程指程序执⾏过程中的⼀个线程实体。JVM允许⼀个应⽤并发执⾏多个线程。

HotspotJVM中的Java线程与原⽣操作系统线程有直接的映射关系。当线程本地存储、缓

冲区分配、同步对象、栈、程序计数器等准备好以后,就会创建⼀个操作系统原⽣线程。

Java线程结束,原⽣线程随之被回收。操作系统负责调度所有线程,并把它们分配到任何可

⽤的CPU上。当原⽣线程初始化完毕,就会调⽤Java线程的run()⽅法。当线程结束时,

121623125152125125

会释放原⽣线程和Java线程的所有资源。

HotspotJVM后台运⾏的系统线程主要有下⾯⼏个:

虚拟机线程

(VMthread)

这个线程等待JVM到达安全点操作出现。这些操作必须要在独⽴的线程⾥执⾏,因为当

堆修改⽆法进⾏时,线程都需要JVM位于安全点。这些操作的类型有:stop-theworld垃圾回收、线程栈dump、线程暂停、线程偏向锁

(biasedlocking)解除。

周期性任务线程这线程负责定时器事件(也就是中断),⽤来调度周期性操作的执⾏。

GC线程这些线程⽀持JVM中不同的垃圾回收活动。

编译器线程这些线程在运⾏时将字节码动态编译成本地平台相关的机器码。

信号分发线程这个线程接收发送到JVM的信号并调⽤适当的JVM⽅法处理。

2.2.JVM内存区域

JVM内存区域主要分为线程私有区域【程序计数器、虚拟机栈、本地⽅法区】、线程共享区

域【JAVA堆、⽅法区】、直接内存。

线程私有数据区域⽣命周期与线程相同,依赖⽤户线程的启动/结束⽽创建/销毁(在Hotspot

VM内,每个线程都与操作系统的本地线程直接映射,因此这部分内存区域的存/否跟随本地线程的

⽣/死对应)。

121623125152125125

线程共享区域随虚拟机的启动/关闭⽽创建/销毁。

直接内存并不是JVM运⾏时数据区的⼀部分,但也会被频繁的使⽤:在JDK1.4引⼊的NIO提

供了基于Channel与Buffer的IO⽅式,它可以使⽤Native函数库直接分配堆外内存,然后使⽤

DirectByteBuffer对象作为这块内存的引⽤进⾏操作(详见:JavaI/O扩展),这样就避免了在Java

堆和Native堆中来回复制数据,因此在⼀些场景中可以显著提⾼性能。

2.2.1.程序计数器(线程私有)

⼀块较⼩的内存空间,是当前线程所执⾏的字节码的⾏号指⽰器,每条线程都要有⼀个独⽴的

程序计数器,这类内存也称为“线程私有”的内存。

正在执⾏java⽅法的话,计数器记录的是虚拟机字节码指令的地址(当前指令的地址)。如

果还是Native⽅法,则为空。

这个内存区域是唯⼀⼀个在虚拟机中没有规定任何OutOfMemoryError情况的区域。

2.2.2.虚拟机栈(线程私有)

是描述java⽅法执⾏的内存模型,每个⽅法在执⾏的同时都会创建⼀个栈帧(StackFrame)

⽤于存储局部变量表、操作数栈、动态链接、⽅法出⼝等信息。每⼀个⽅法从调⽤直⾄执⾏完成

的过程,就对应着⼀个栈帧在虚拟机栈中⼊栈到出栈的过程。

栈帧(Frame)是⽤来存储数据和部分过程结果的数据结构,同时也被⽤来处理动态链接

(DynamicLinking)、⽅法返回值和异常分派(DispatchException)。栈帧随着⽅法调⽤⽽创

文档评论(0)

1637142147337d1 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档