随笔分类 -  JVM底层原理和性能调优

摘要:如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。 Serial收集器: Serial(串行)收集器是一个单线程的收集器,单线程一方面意味着它 只会使用一个CPU或者一条线程去完成垃圾收集工作,另一方面也意味着它进行垃圾收集时必须暂停其他线程的所有工作(“Stop The Wo 阅读全文
posted @ 2020-03-23 22:24 城为唯一 阅读(171) 评论(0) 推荐(0) 编辑
摘要:前面已经知道了如何判断对象会被回收。那么现在来分析一下这些垃圾对象是如何被收集的,通过什么算法收集的。 GC 常用算法有: 标记-清除算法 复制算法 标记-整理算法 分代收集算法 目前主流的jvm(HotSot)采用的是分代收集算法。 标记-清除(Mark-Sweep)算法 算法分为“标记”和“清除 阅读全文
posted @ 2020-03-23 17:11 城为唯一 阅读(228) 评论(0) 推荐(0) 编辑
摘要:jvm是如何判断对象可以被回收的? 方法一:引用计数法 jvm给对象中添加一个引用计数器,每当有一个地方引用它,计数器加1,当引用失效,计数器减1,任何时候计数器为0的对象就是不可能再被使用的。 此方法存在的局限性:不能解决对象之间相互引用的问题。例如: 如上图所示,栈中引用了堆中对象objA和ob 阅读全文
posted @ 2020-03-23 16:04 城为唯一 阅读(1081) 评论(0) 推荐(0) 编辑
摘要:JVM三种运行模式: 解释模式(Interpreted Mode):只使用解释器(-Xint强制JVM使用解释模式),执行一行JVM字节码就编译一行为机器码。(可以马上看到效果,但是运行过程比较慢) 编译模式(Compiled Mode):只使用编译器(-Xcomp强制JVM使用编译模式),先将所有 阅读全文
posted @ 2020-03-21 17:46 城为唯一 阅读(352) 评论(0) 推荐(0) 编辑
摘要:由上图可以看出: 堆中分为新生代(占堆1/3内存)和老年代(占堆2/3内存), 新生代又分为Eden区(占新生代内存的8/10)和survivor区(占新生代内存的2/10), survivor区又分为from区和to区(各占新生代内存的1/10) 我们知道new出来的对象都是方在堆里面,那么具体在 阅读全文
posted @ 2020-03-21 17:16 城为唯一 阅读(619) 评论(0) 推荐(0) 编辑
摘要:假如运行以下Math.hava类 package com.cjc.classload; public class Math { public static final Integer COUNTAGE = 666; public static User user = null; public int 阅读全文
posted @ 2020-03-21 16:23 城为唯一 阅读(860) 评论(0) 推荐(0) 编辑
摘要:一、 Java中有如下几种类加载器: 启动类加载器:负责加载支撑JVM运行的位于JRE的lib目录下的核心类库,比如rt.jar、charsets.jar等。 扩展类加载器:负责加载支撑JVM运行的位于JRE的lib目录下的ext扩展目录中的JAR类包。 应用程序加载器:负责加载ClassPath路 阅读全文
posted @ 2020-03-21 14:39 城为唯一 阅读(172) 评论(0) 推荐(0) 编辑
摘要:类加载:类加载器将class文件加载到虚拟机的内存中(放在方法区中) 类加载过程: 加载:在硬盘上查找并通过IO读入字节码文件。 连接:执行校验、准备、解析步骤。 校验:校验字节码文件的正确性。(a.校验文件格式:是否为.class文件 b.检验元数据:是否符合java语言规范 c.检验字节码:程序 阅读全文
posted @ 2020-03-21 09:37 城为唯一 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-03-20 20:19 城为唯一 阅读(158) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示