
JVM虚拟机
每天进步一点点呀
工作日常技术学习、积累、总结
-
原创 面试题之GC是什么?为什么要有GC?
一、GC是什么?为什么要有GC?参考回答:GC是垃圾收集的意思,内存处理是开发人员容易出现问题的地方,忘记或者错误地内存回收会导致程序或者系统的不稳定甚至崩溃,Java提供的垃圾回收机制可以自动检测对象是否超过作用域从而达到自动回收的目的。二、简述Java垃圾回收机制参考回答:在Java开发中,程序员并不需要显式去释放一个对象的内存的,而是由虚拟机自动进行管理。在JVM中,有一个低优先...2020-04-04 19:33:51683
0
-
原创 面试题之请描述一下Java类加载过程
一、简介Java类加载过程是面试中常问的问题之一,今天我们将对类加载的各个过程进行简单的分析和总结,这样在面试的时候对这个问题就有信心回答好了。二、类加载过程Java类加载过程包含下面5个步骤:【a】加载通过一个类的全限定名获取该类的二进制流; 将该二进制流的静态存储结构转化为方法区运行时数据结构; 在内存中生成该类的Class对象,作为该类的数据访问入口;【b】链接...2020-04-04 19:22:03947
0
-
原创 面试题之类加载器
一、简介本文总结一些关于JVM中类加载器相关的面试题。二、什么是类加载器?类加载器,负责加载class字节码文件,class文件在文件开头有特定的文件标识,将class文件字节码内容加载到内存中,并将这些内容转换成方法区中的运行时数据结构并且ClassLoader只负责class文件的加载,至于它是否可以运行,则由执行引擎Execution Engine决定。类加载器的工作图大体如...2020-02-22 20:01:10462
0
-
原创 JVM初识之自定义类加载器
一、简介通常情况下,我们都是直接使用系统类加载器,但是有些时候,由于某种特殊需求,我们也需要自定义类加载器。比如,应用程序是根据网络来传输字节码文件信息, 为了保证在网络传输过程中字节码文件的安全,通常都会进行加密,这样我们在加载类的时候,就需要进行解密,这种需求使用系统提供的类加载器是实现不了的,这就需要我们自己定义加密解密类加载器。自定义类加载器一般都是继承ClassLoader类。 ...2019-01-17 21:43:06214
0
-
原创 JVM初识之类加载器
一、类加载器作用所谓类加载器,就是将.class二进制字节码文件加载到内存中,并将这写静态数据转换为方法区中的运行时数据结构,同时在堆中生成一个代表该类的Class对象,作为方法区类数据访问的入口。二、类缓存标准的JAVA SE类加载器可以按要求查找类,一旦这个类被加载到类加载器中,它会维持缓存一段时间,但是JVM垃圾回收器可以回收这些Class类对象。三、类加载器的分类...2019-01-16 20:54:58129
0
-
原创 JVM初识之类加载过程
一、类加载概念类的加载,指的就是将类对应的.class二进制字节码文件加载到我们内存当中,将其放在运行时数据区的方法区中,同时会在堆中创建一个代表这个类的Class对象,用来封装这个类在方法区内的数据结构,并且对外提供了访问方法区内的数据结构的接口,外部可以通过Class对象来访问该类。 二、类加载过程如上图,就是一个类加载的全过程,其中包括:加载、链接(验证、准备、解析)、初...2019-01-15 21:23:06139
0
-
原创 JVM初识之内存分析常用命令和工具
一、简介无论是在开发环境还是在生产环境中,难免都会遇到内存溢出等内存问题,为了尽快使我们找到发生内存问题所在,Java提供了一些内带的命令供我们使用,除了使用JDK自带命令(jps、jstack、jinfo、jstat等),我们也可以借助一些工具,如VirtualVM、jconsole、Eclipse Memory Analyzer(MAT)等,通过这些命令和工具,可以帮助我们方便的在生产监控...2019-01-26 11:58:11845
0
-
原创 JVM初识之垃圾回收机制(GC)
一、简介大家都知道,随着程序中不断的new创建对象,创建对象意味着要不断分配内存,而计算机的内存大小是有限的,不可能一直分配内存不释放,如果一直这样下去迟早引发内存溢出,为了尽量避免出现内存溢出,虚拟机提供了垃圾回收机制(garbage collection),对一些无用对象进行回收以释放不再使用的内存,减轻计算机的内存压力。二、哪些是属于要被回收的垃圾通常来说,那些不可能再被任...2019-01-20 20:38:46140
0
-
原创 JVM初识之常用参数配置
一、简介通过上一篇文章,已经了解了java中垃圾回收算法和各种垃圾收集器的特点和使用场景,其实java提供了很多参数供我们在运行时指定。下面介绍一些常用的JVM参数。 二、常见JVM参数调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题。常用JVM参数 JVM参数 含义 描述 -Xms 设置堆内存的初始大小 默认(M...2019-01-24 22:47:09177
0
-
原创 JVM初识之虚拟机内存结构
一、简介大家都知道,在Java编程中,内存都是由JVM虚拟机自动管理和分配的,如果项目中出现内存溢出或者内存泄漏的问题,如果对JVM内存结构还不太了解的话,解决这些问题将会比较棘手,笔者在学习JVM虚拟机内存结构之前也只是对内存结构有一个很浅的认识,本文将总结一下虚拟机的内存结构,希望能够加深对内存结构的理解。二、JVM内存结构图由上图可见,Java内存主要由: 方法区、堆(...2019-01-18 20:48:46197
0