JVM虚拟机
pocher
Your thought is the parent which gives birth to all things
展开
-
-XX:+DisableExplicitGC弊端
总结:如果jvm参数中设置了-XX:+DisableExplicitGC,那么代码中手动调用System.gc()就不会生效。而有些框架中因为是使用的堆外内存,必须手动调用System.gc()来释放。如果禁用掉就会导致堆外内存使用一直增长,造成内存泄露。详解:直接内存与System.gc()System.gc()默认会触发一次Full GC,如果在代码中不小心调用了Syst...原创 2020-04-15 09:09:40 · 14740 阅读 · 0 评论 -
类与类加载器【深入分析版】
两个类来源于同一个Class文件,被同一个虚拟机加载,只要他们的类加载器不同,那么这两个类就必定不相等,也就是说判断两个类是否相等,取决于两个条件:1、类本身,2、加载该类的类加载器下面详细解析:类加载器虽然只用于实现类的加载动作,但它在java程序中起到的作用却远远不限于类加载阶段。对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性,每一个类加...原创 2019-05-09 15:25:53 · 311 阅读 · 0 评论 -
Class.forName和ClassLoader区别详解
在Java的反射中,Class.forName和ClassLoader的区别前言最近在面试过程中有被问到,在Java反射中Class.forName()加载类和使用ClassLoader加载类的区别。当时没有想出来后来自己研究了一下就写下来记录一下。解释在java中Class.forName()和ClassLoader都可以对类进行加载。ClassLoader就是遵循双亲委派模型最...转载 2019-05-08 10:16:10 · 321 阅读 · 0 评论 -
双亲委派模型【深入分析版】
从Java虚拟机的角度来讲,只存在两种不同的类加载器:一种是启动类加载器(Bootstrap ClassLoader),使用C++语言实现的,是JVM虚拟机自身的一部分;另一种是所有其它的类加载器,都是由Java语言实现的,独立于JVM虚拟机外部,并且全部都继承自抽象类java.lang.ClassLoader。jdk自带了三种类加载器,分别是启动类加载器(Bootstrap ClassLoa...原创 2019-05-09 16:25:44 · 259 阅读 · 0 评论 -
JVM虚拟机详解
一、运行时数据区域线程私有:程序计数器、java虚拟机栈、本地方法栈线程共享:java堆、方法区程序计数器记录正在执行的虚拟机字节码指令的地址(如果正在执行的是本地方法则为空)。Java 虚拟机栈每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,就对应着一个栈帧在 Java 虚拟机栈中入栈...转载 2019-03-31 16:20:13 · 610 阅读 · 0 评论