![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
JVM
落英神剑碧海潮生
桃花影落飞神剑,碧海潮生按玉箫
展开
-
【JVM】垃圾回收机制
什么是垃圾?垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。甚至可能导致内存溢出。为什么需要GC?对于高级语言来说,一个基本认知是如果不进行垃圾回收,内存迟早都会被消耗完,因为不断地分配内存空间而不进行回收,就好像不停地生产生活垃圾而从来不打扫一样。除了释放没用的对象,垃圾回收也可以清除内存里的记录碎片。碎片整理将所占用的堆内存移到堆的一端,以便.原创 2020-09-05 17:06:02 · 616 阅读 · 0 评论 -
【JVM】执行引擎
在介绍执行引擎之前,我们先来了解几个概念:机器码:各种用二进制编码方式表示的指令(0101……),叫做机器指令码。开始,人们就用它采编写程序,这就是机器语言。机器语言虽然能够被计算机理解和接受,但和人们的语言差别太大,不易被人们理解和记忆,并且用它编程容易出差错。用它编写的程序一经输入计算机,CPU直接读取运行,因此和其他语言编的程序相比,执行速度最快。机器指令与CPU紧密相关,所以不同种类的CPU所对应的机器指令也就不同。指令:由于机器码是有0和1组成的二进制序列,可读性实在太差,于是人们发明了.原创 2020-09-03 18:25:11 · 274 阅读 · 0 评论 -
【JVM】对象的实例化
对象实例化的几种方式:new 调用Class对象的newInstance()方法(这里调用的无参构造器,权限必须是public) Constructor对象的newInstance(xxx)方法(可以调用无参、带参的构造器,权限没有要求) 使用clone()浅克隆(不调用任何构造器,当前类需要实现Cloneable接口,实现clone()方法) 使用反序列化(从文件中、从网络中获取一个对象的二进制流) json方式public static void main(String[] args)原创 2020-09-02 19:43:12 · 229 阅读 · 0 评论 -
【JVM】运行时数据区
Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。其具体的结构如下图:上图中方法区和堆是被多线成共享的,一个Java进程一份,程序计数器、本地方法栈、虚拟机栈都是随线程的开始和结束来创建和销毁的。所以每个线程独有一套自己的程序计数器、本地方法栈、虚拟机栈。而方法区和堆空间时多线程共享的。JVM中的线程:线程是一个程序里的运行单元。JVM允原创 2020-09-02 19:40:51 · 287 阅读 · 0 评论 -
【JVM】类加载子系统
类加载器子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识。ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字而量和数字常量(这部分常量信息是class文件中常量池部分的内存映射)一个类被加载的详细流程如下图:加载阶段通过一个类的全限定名获取定义此类的二进制字节流 将这个...原创 2020-07-23 23:14:06 · 138 阅读 · 0 评论 -
【JVM】JVM概述
虚拟机所谓虚拟机(Virtual Machine), 就是一台虚拟的计算机。它是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机和程序虚拟机。大名鼎鼎的Visual Box, VMware就属于系统虚拟机,它们完全是对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台。程序虚拟机的典型代表就是Java虚拟机,它专门为执行单个计算机程序而设计,在Java虚拟机中执行的指令我们称为Java字节码指令。无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的原创 2020-07-23 21:36:15 · 325 阅读 · 0 评论