
【JVM】
fanfan4569
登上山顶,欣喜掩盖疼痛。
展开
-
【JVM】之 动手模拟 FullGC
文章目录一、环境二、分析(1)代码片段1(2)代码片段2(3)代码片段3 一、环境 public class Demo { public static void main(String[] args) { byte[] array1 = new byte[4 * 1024 * 1024]; array1 = null; byte[] array2 = new byte[2 * 1024 * 1024]; byte[] array原创 2020-05-25 00:14:56 · 1377 阅读 · 3 评论 -
【JVM】之 动手模拟 老年代GC
文章目录零、背景简介一、前半部分代码gc日志分析(1)分析二、后半部分gc日志分析(2)分析(3)分析 GC日志 回顾下,对象进入老年代的 4 个常见的时机: 躲过15次 GC,年龄达到 15岁时。 动态年龄判定规则,如果Survivor区域内年龄1 + 年龄2 + 年龄n 的对象总和大于 Survivor区的50%,此时年龄n以上的对象会进入老年代,不一定要达到15岁 如果一次 Young GC后存活对象太多无法放入Survivor区,此时直接计入老年代 大对象直接进入老年代 零、背景简介 本主题原创 2020-05-25 00:10:10 · 516 阅读 · 0 评论 -
【JVM】之 动手模拟 YoungGC
文章目录一、动手模拟`YoungGC`(1)示例代码(2)运行过程(3)运行后,分析gc日志二、GC日志说明(1)堆使用情况 一、动手模拟YoungGC 以下是 :JDK 1.8版本 // JVM 参数运行 -XX:NewSize=5242880 -XX:MaxNewSize=5242880 -XX:InitialHeapSize=10485760 -XX:MaxHeapSize=10485760 -XX:SurvivorRatio=8 -XX:PretenureSizeThreshold=1048576原创 2020-05-17 19:01:53 · 1068 阅读 · 0 评论 -
【JVM】之 一些未解决问题
初学JVM,好多不怎么明白,希望有大大能解惑下。 Q1 :同一个.java文件生成的.class文件不同图① 用命令行javac 编译(在IDEA中打开.class文件),ps:两.class并没放在同一目录下。用BinaryViewer 打开:图② IDEA中编译用BinaryViewer 打开:原创 2017-04-12 16:07:03 · 373 阅读 · 0 评论 -
【JVM】之 类加载(ClassLoader)
Q:虚拟机如何加载这些Class文件? Q:Class文件中的信息进入到虚拟机后会发生什么变化? ①虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 ②与那些在编译时需要进行连接工作的语言不同,在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的。 ③Java原创 2017-04-09 16:28:29 · 602 阅读 · 0 评论 -
【JVM 学习】之 类文件
好文推荐(图文并茂):http://blog.youkuaiyun.com/luanlouis/article/details/39960815 Question:Java程序如何运行的? -见下图 Question:为什么使用虚拟机? -1。跨平台。(CPU指令集不同,操作系统接口不同) -2。效率更高。(相对于解释型语言) -3。抽象层次高,更容易编程原创 2017-04-06 15:42:40 · 346 阅读 · 0 评论 -
【JVM】之 垃圾回收
文章目录一、垃圾回收算法(1) 标记-清除法(2) 标记-整理法(Mark-Copy)二、垃圾回收器(Garbage Collector)(1) `Serial`回收器(2) `ParNew`回收器(3) `CMS`回收器(Concurrent Mark Sweep Collector)(4) `G1`回收器(Garbage-First Garbage Collector)1. `G1` 是如何工...原创 2019-09-23 14:45:36 · 225 阅读 · 0 评论