随笔分类 - java / jvm
摘要:输出GC日志 通过阅读GC日志,我们可以了解Java虚拟机内存分配与回收策略。 先来看一个简单的示例。 下面是GC日志: 0.115: [GC (System.gc()) [PSYoungGen: 3020K->600K(38400K)] 3020K->608K(125952K), 0.001229
阅读全文
摘要:前面我们总结了Java虚拟机的监控及诊断工具(命令行)相关命令的使用,用命令行虽然说比较方便,但不够直观,要是有图形显示JVM运行的一些情况就好了。eclipse MAT 和 Java Mission Control 是两个使用比较广泛的GUI虚拟机的监控及诊断工具,下面让我们来用用吧。 Eclip
阅读全文
摘要:对于普通的开发人员来说,可以阅读帮助文档或者源码来对JDK的设计以及JVM的内存管理获取一定的了解,但对于线上运行的程序,如何对程序进行监控和诊断呢?比如一个程序挂了,怎么通过分析堆栈信息、GC日志、线程快照等信息来快速定位问题?JDK的大佬早就为我们考虑到这一点,所以在JDK中包含了许多用于监控及
阅读全文
摘要:最近碰到几道关于i++与++i相关的题,我们从字节码角度来分析执行情况,该文章需要读者有字节码相关基础及了解方法调用机制。 分析 下面是一个题,请问下面代码输出什么? public static void f() { int i = 1; System.out.println(i++ + i++);
阅读全文
摘要:javap命令可以用来查阅字节码文件,可以将指定的字节码文件反编译,反解析出当前类对应基本信息、常量池(Constant pool)、字段区域、 方法区(Code[JVM指令集])、异常表(Exception table)、本地变量表(LocalVariableTable)、行数表(LineNumb
阅读全文
摘要:在看Class文件的结构时,我们会遇到这样几个概念,全限定名(Fully Qualified Name)、简单名称(Simple Name)和描述符(Descriptor),那么这些是什么东东呢? 首先来说全限定名,一个类的全限定名是将类全名的.全部替换为/,示例如下: me/mingshan/cg
阅读全文
摘要:前几天生产环境出现了一个问题,gc日志里面某一个时间段出现了大量的Full GC,而且都是回收元空间内存失败了,最终导致了JVM停止运行,微服务中的某个服务发生了宕机。下面记录下排查该问题的过程。 首先我们根据服务器的CPU核心数和内存大小,设置了元空间的最大值为512M,这是前提。在服务GC日志中
阅读全文
摘要:title: GC都有哪些? tags: [JVM, GC] author: Mingshan categories: [JVM, GC] date: 2020-03-11 相信把Java当做生产力工具的同学肯定对gc比较熟悉的,JVM团队在这块下了很多的功夫创造了很多垃圾收集器,不过有些垃圾收集器
阅读全文