郑州Java培训课程之JVM相关知识汇总
很多同学在学到Java虚拟机(JVM)时表示学习难度太大,不知道如何下手。事实上,你之所以觉得难学是因为你没有找对方法,今天千锋小编分享的郑州Java培训课程就给大家讲解一下JVM相关的知识点。
虚拟机:指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统,是物理机的软件实现。常用的虚拟机有VMWare、Visual Box、Java Virtual Machine(Java虚拟机,简称JVM)。
JVM由三个主要的子系统构成:1)类加载器子系统;2)运行时数据区(内存);3)执行引擎。按照数据区域分类,JVM可划分为方法区(Method Area)、虚拟机栈(VM Stack)、本地方法栈(Native Method Stack)、堆(Heap)、程序计数器(Program Counter Register)以及直接内存(Direct Memory)。
方法区:属于线程共享的内存区域,用于存储虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码(动态加载OSGI)等数据。理论上属于Java虚拟机的一部分,为了区分开来叫做 Non-Heap非堆。
虚拟机栈:是线程私有的,声明周期与线程相同。虚拟机栈是Java方法执行的内存模型,每个方法被执行时都会创建一个栈帧,即方法运行期间的基础数据结构。栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等,每个方法执行中都对应虚拟机栈帧从入栈到处栈的过程。
本地方法栈:与虚拟机栈类似,虚拟机栈为Java程序服务,本地方法栈支持虚拟机的运行服务,具体实现由虚拟机厂商决定,也会抛出 stackOverFlowError、OutOfMemory异常。
堆:是虚拟机管理内存中最大的一部分,被所有线程共享,用于存放对象实例(对象、数组),物理上不连续的内存空间,由于GC收集器,分代收集,所以划分为:新生代 Eden、From SurVivor空间、To SurVivor空间,allot buffer(分配空间),可能会划分出多个线程私有的缓冲区、老年代。
程序计数器:行号指示器,字节码指令的分支、循环、跳转、异常处理、线程恢复(CPU切换),每条线程都需要一个独立的计数器,线程私有内存互不影响,该区域不会发生内存溢出异常。
直接内存:不属于虚拟内存区域,是一种基于通道与缓冲区的IO方式,可以使用本地函数直接分配堆外内存,在堆中存储引用的外部内存地址。通过引用完成对直接引用内存的操作,1.4之后提供的NIO显著提高效率,避免了堆内存与Native内存的来回复制操作,不受虚拟机内存控制,会抛出OUtOfMemory异常。
垃圾收集(GC:Garbage Collection)
如何判断一个对象该被回收?1)引用计数器。缺点是无法解决对象之间相互引用的问题;2)GCRoot搜索。从GCRoots开始向下搜索,搜索过的路径称为引用链,当一个对象跟 GCRoots没有任何引用链时,也就是说该对象不可达,九二一被回收了。
可以作为GCRoots的对象包括:虚拟机栈(本地变量表中)的对象、方法区中类静态属性引用的对象、方法区中常量引用的对象、本地方法栈中引用的对象。
如果你想了解更多郑州Java培训课程所包含的知识点,可以来千锋郑州Java培训班。千锋坚持以就业为导向制定课程大纲,大牛讲师通过四大课程阶段带领学员把Java语言学到不可思议的高度,并在毕业前夕为学员安排模拟面试环节,让学员在真正的面试过程中可以充分的发挥自身的优势,成为一名上岗即用的Java开发工程师。
相关推荐HOT
更多>>大数据培训学习什么,你了解多少
大数据培训学习什么?你了解多少?随着互联网技术的不断发展,大数据技术开始走进人们的视野,并成为现阶段吃香的技术能力之一。那么熟练掌握大...详情>>
2023-03-16 15:16:01云计算培训怎么样?可靠吗
云计算培训怎么样?可靠吗?靠不靠谱要看你什么要求了,因人而异。但如果你是想通过培训机构快速掌握好技能,然后进入行业,这个一般都没有问题...详情>>
2023-03-07 14:51:00java编程工资多少?主要学哪些内容
java编程工资多少?主要学哪些内容?java程序员的月收入在6000-20000不等,在一线城市有工作经验的java程序员的薪资收入会高一些,在二三线城市...详情>>
2023-02-24 14:56:07it工程培训机构,云计算难学吗
下面给小伙伴们列举一个学习大纲参考: 第一阶段: 零基础入门 1、计算机基础 2、Raid设置与网络服务基础 3、网络基础 第...详情>>
2022-12-01 17:48:04