
JVM
文章平均质量分 54
NewBee.Mu
这个作者很懒,什么都没留下…
展开
-
JVM知识点整理(整理中)
运行过程:调用T.count时,首先将T.class通过app加载到内存,再经过Verification进行校验,之后再通过Preparation对T里面的静态成员变量赋默认值,此时t是空值,,count是0,再进行Resolution,之后再通过Initializing对静态成员变量赋初始值,此时t会被赋值new T(),对count++,此时count是1,之后count又被赋值为2,因此count为2。所用到的类库,会在class文件被加载到 JVM的同时,也被装载到类加载器中。原创 2023-01-20 15:10:33 · 2511 阅读 · 3 评论 -
jvm常用配置参数
jvm常用配置参数 -Xms 初始内存大小,默认为物理内存的 1/64,等价于 -XX:InitialHeapSize -Xmx 最大内存大小,默认为物理内存的1/4,等价于 -XX:MaxHeapSize -Xss 设置单个线程栈的大小,一般默认为 512k ~ 1024k,等价于 -XX:TheadStackSize -Xmn 设置年轻代大小,一般不用动 -XX:MetaspaceSize 设置元空间大小 ...原创 2021-04-22 15:38:24 · 167 阅读 · 0 评论 -
Java 类加载器(ClassLoader)的实际使用场景有哪些?
什么是classloader classloader顾名思义,即是类加载。虚拟机把描述类的数据从class字节码文件加载到内存,并对数据进行检验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。了解java的类加载机制,可以快速解决运行时的各种加载问题并快速定位其背后的本质原因,也是解决疑难杂症的利器。因此学好类加载原理也至关重要。 classloader的加载过程 类从被加载到虚拟机内存到被卸载,整个完整的生命周期包括:类加载、验证、准备、解析、初始化、使用和卸载七转载 2021-04-08 16:47:20 · 1011 阅读 · 1 评论 -
CMS收集器和G1收集器的区别
区别一:使用的范围不一样 CMS收集器是老年代的收集器,可以配合新生代的Serial和ParNew收集器一起使用。 G1收集器收集范围是老年代和新生代。不需要结合其他收集器使用。 区别二:使用的算法不一样 CMS收集器是使用“标记-清除”算法进行的垃圾回收。 G1收集器使用的是“标记-整理”算法进行的垃圾回收。 区别三:CMS收集器和G1收集器的优劣性 CMS收集器以最小的停顿时间为目标的收集器,容易产生内存碎片。 G1收集器不会产生内存碎片。 区别四:垃圾回收的过程不一样 CMS收集器:初始标记→并发标记原创 2021-01-17 15:18:43 · 1146 阅读 · 0 评论 -
自己对JVM的一点理解
JVM应该是运行在操作系统之上的,和软件并没有直接的交互 在我的理解中,JVM是这么组成的。 首先是一个类加载器,它的作用就是加载一个class文件。 举个例子,比如现在有一个Student的类。它是抽象的,但是如果我们把它new一下,它就变成一个具体的实例了。 它的对象实例化过程是这样的: 首先是一个Student.class文件,然后它进入到了类加载器中。类加载器通过加载并实例化把他变成了一个类的模板Student Class。这就是反射的class对象。如果想要用Student的反射对象,就需要用St原创 2020-07-02 19:47:58 · 275 阅读 · 0 评论