深圳J***a培训课程之JVM相关知识汇总
作者:2019/7/12 5:50:30

深圳J***a培训课程哪里有大神带班?千锋教育每个阶段学习都是大神带班的,很靠谱。很多同学在学到J***a虚拟机(JVM)时表示学习难度太大,不知道如何下手。事实上,你之所以觉得难学是因为你没有找对方法,今天千锋小编分享的深圳J***a培训课程就给大家讲解一下JVM相关的知识点。  

虚拟机:指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统,是物理机的软件实现。常用的虚拟机有VMWare、VisualBox、J******irtualMachine(J***a虚拟机,简称JVM)。  

JVM由三个主要的子系统构成:1)类加载器子系统;2)运行时数据区(内存);3)执行引擎。按照数据区域分类,JVM可划分为方法区(MethodArea)、虚拟机栈(VMStack)、本地方法栈(NativeMethodStack)、堆(Heap)、程序计数器(ProgramCounterRegister)以及直接内存(DirectMemory)。  

方法区:属于线程共享的内存区域,用于存储虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码(动态加载OSGI)等数据。理论上属于J***a虚拟机的一部分,为了区分开来叫做Non-Heap非堆。  

虚拟机栈:是线程私有的,声明周期与线程相同。虚拟机栈是J***a方法执行的内存模型,每个方法被执行时都会创建一个栈帧,即方法运行期间的基础数据结构。栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等,每个方法执行中都对应虚拟机栈帧从入栈到处栈的过程。  

本地方法栈:与虚拟机栈类似,虚拟机栈为J***a程序服务,本地方法栈支持虚拟机的运行服务,具体实现由虚拟机厂商决定,也会抛出stackOverFlowError、OutOfMemory异常。  

堆:是虚拟机管理内存中***大的一部分,被所有线程共享,用于存放对象实例(对象、数组),物理上不连续的内存空间,由于GC收集器,分代收集,所以划分为:新生代Eden、FromSurVivor空间、ToSurVivor空间,allotbuffer(分配空间),可能会划分出多个线程私有的缓冲区、老年代。  

程序计数器:行号指示器,字节码指令的分支、循环、跳转、异常处理、线程***(CPU切换),每条线程都需要一个***的计数器,线程私有内存互不影响,该区域不会发生内存溢出异常。  

直接内存:不属于虚拟内存区域,是一种基于通道与缓冲区的IO方式,可以使用本地函数直接分配堆外内存,在堆中存储引用的外部内存地址。通过引用完成对直接引用内存的操作,1.4之后提供的NIO显著提***率,避免了堆内存与Native内存的来回***操作,不受虚拟机内存控制,会抛出OUtOfMemory异常。  

垃圾收集(GC:GarbageCollection)  

如何判断一个对象该被回收?1)引用计数器。缺点是无法解决对象之间相互引用的问题;2)GCRoot搜索。从GCRoots开始向下搜索,搜索过的路径称为引用链,当一个对象跟GCRoots没有任何引用链时,也就是说该对象不可达,九二一被回收了。  

可以作为GCRoots的对象包括:虚拟机栈(本地变量表中)的对象、方法区中类静态属性引用的对象、方法区中常量引用的对象、本地方法栈中引用的对象。  

如果你想了解更多深圳J***a培训课程所包含的知识点,可以来千锋深圳J***a培训班。千锋坚持以就业为导向制定课程大纲,大牛讲师通过四大课程阶段带领学员把J***a语言学到不可思议的高度,并在毕业前夕为学员安排模拟面试环节,让学员在真正的面试过程中可以充分的发挥自身的优势,成为一名上岗即用的J***a开发工程师。

商户名称:北京千锋互联科技有限公司深圳宝安分公司

版权所有©2024 产品网