JVM
我会努力变强的
这个作者很懒,什么都没留下…
展开
-
Java虚拟机(JVM)之类的加载过程详解
java程序在对某个类进行引用、使用时,就会开始对该类进行加载,比如直接使用类加载器进行显式加载、创建该类的对象、使用该类的类变量等情况。类的加载是通过java虚拟机的类加载子系统完成的。类的加载主要分为三个阶段。类的加载步骤类加载子系统负责从文件系统或者网络上加载class文件,class文件在文件开头会有特定的文件标志。ClassLoader只负责class文件的加载,至于他是否可以运行,则有执行引擎决定。加载的类信息存放在一块称为方法区的内存空间中,除了类信息外,方法区还会存放运行时常量池原创 2020-06-30 20:38:48 · 2406 阅读 · 0 评论 -
Java虚拟机(JVM)概念简介
虚拟机概述所谓虚拟机(Virtual Machine)就是一台虚拟的计算机,它是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机和程序虚拟机。比较出名的系统虚拟机有Visual Box、VMware,他们是完全对物理计算机的仿真,提供一个可运行完整操作系统的软件平台。Java虚拟机就是典型的程序虚拟机,他专门为执行单个计算机程序而设计的,在Java虚拟机中执行的指令我们称为Java字节码指令。无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中,比如j原创 2020-06-30 17:53:55 · 1475 阅读 · 0 评论 -
JVM初学之JVM的垃圾回收机制与垃圾回收器
如何判断对象是否"已死":首先,我们要对对象进行垃圾回收之前,就必须要判断对象是否“已死”,也就是是否可回收。这里有两种判断逻辑:引用计数法:在对象内部维护一个引用计数器,每当有一处地方引用该对象时,该计数器就加一,每当有一个引用失效时,该计数器就减一,当引用计数器为0时,表示该对象不可能再被使用,属于可回收对象。优点: 实现简单,判断效率高。缺点: 很难解决对象之间循环引用的问题。...原创 2020-04-16 16:38:58 · 183 阅读 · 0 评论 -
JVM初学之堆的内存模型
定义:堆是JVM运行时内存区域中最大的一个区域,我们平常创建的对象,数组的内存都是在堆上分配的。堆不仅仅只是一块大区域,它分为多个不同作用的区域。Old区。Young区。Young区又分为Eden区和两个大小相同的Survivor区,这两个区有的叫s1 和 s2 也有将from 区 和 to区。解释:如图,左边的是old区,右边的是Young区。Young区又分为Eden区和S...原创 2020-04-15 10:59:08 · 282 阅读 · 0 评论 -
JVM初学之JVM的运行时数据区
什么是JVM的运行时数据区:看下图:java虚拟机在该虚拟机进程运行过程中定义了各种各样的运行时数据区。用于存储java程序运行时各种不同的数据。有些运行时数据区是在java虚拟机进程开始时就创建,进程结束时销毁,但是一些运行时数据区是在线程创建时跟着创建,线程终止时销毁。JVM六大运行时数据区:堆。方法区。虚拟机栈。本地方法栈。程序计数器。运行时常量池。由于运行时常量...原创 2020-04-09 18:12:13 · 180 阅读 · 0 评论 -
JVM初学之类java的类加载器和双亲委派模型
类加载器:定义:java类加载器用于对java类的加载,java有自带的类加载器,也可以自定义类加载器实现定制化,类似于tomcat。java自带了三个系统的类加载器:如下图:双亲委派模型:背景:我们都知道,jdk中存在java.lang.String类,但是如果我们自定义一个全类名也为java.lang.String的类的话,如果都加载的话系统中就会存在多个全类名相同的类,这样会使得...原创 2020-04-07 22:22:57 · 123 阅读 · 0 评论 -
JVM初学之类的加载过程
类的加载过程分为三个步骤:装载:(这个过程使用类加载器完成的)a)类加载器通过一个类的全限定名找到该java源码文件,并转化为字节流。b)这些字节流中会有描述该类的静态存储结构的信息,根据这些信息在方法区转换为对应的运行时数据结构。b)在java堆里创建一个代表该类的java.lang.Class对象,用于作为访问这些运行时数据的入口。链接:a)验证:保证所加载的类的正确性,包括文件...原创 2020-04-07 21:21:56 · 126 阅读 · 0 评论