摘要: GC日志分析 通过阅读GC日志,我们可以了解Java虛拟机内存分配与回收策略。 内存分配与垃圾回收的参数列表 -XX: +PrintGC 输出Gc日志。类似:-verbose:gc; -XX : +PrintGCDetails 输出GC的详细日志 -XX: +PrintGCTimeStamps输出G 阅读全文
posted @ 2020-07-29 15:33 Maple_XL 阅读(359) 评论(0) 推荐(0) 编辑
摘要: 垃圾回收器 GC分类和性能指标 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多.的GC版本。 从不同角度分析垃圾收集器,可以将GC分为不同的类型。 按线程数分,可以分为串行垃圾回收器和并行垃圾回 阅读全文
posted @ 2020-07-29 15:28 Maple_XL 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 垃圾回收相关算法 垃圾标记阶段:对象是否存活 在堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为己经死亡的对象,GC才会在执行垃圾回收时,释放掉其所占用的内存空间,因此这个过程我们可以称为垃圾标记阶段。 那么在JVM 阅读全文
posted @ 2020-07-29 15:20 Maple_XL 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 垃圾回收概念 什么是垃圾 垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。 如果不及时对内存中的垃圾进行清理那么,这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。甚至可能导致内存溢出。 为什么需要GC 对于高级语言来说,一个基本认知是如果 阅读全文
posted @ 2020-07-29 13:44 Maple_XL 阅读(327) 评论(0) 推荐(0) 编辑
摘要: StringTable String在jdk8及以前内部定义了final char[] value用于存储字符串数据。jdk9时改为byte [] 字符串常量池中是不会存储相同内容的字符串的。 String的String Pool是一个固定大小的Hashtable,默认值大小长度是1009。如果放进 阅读全文
posted @ 2020-07-29 13:40 Maple_XL 阅读(1012) 评论(0) 推荐(0) 编辑
摘要: 执行引擎概述 执行引擎是Java虛拟机核心的组成部分之一。 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面,上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体 阅读全文
posted @ 2020-07-29 13:36 Maple_XL 阅读(951) 评论(2) 推荐(1) 编辑
摘要: 对象实例化的几种方式 对象在内存中的布局 直接内存区 不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。 来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存 直接内存是在Java堆外的、直接向系统申请的内存区间。 通常,访问直接内存的速度会优 阅读全文
posted @ 2020-07-29 13:31 Maple_XL 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 运行时数据区内部结构 Java,虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建(方法区和堆),随着虚拟机退出而销毁。另外一些则是与线程一 一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。 一个JVM实例就对应一个唯一的Runtime实例 程 阅读全文
posted @ 2020-07-29 13:17 Maple_XL 阅读(549) 评论(0) 推荐(0) 编辑
摘要: JVM的生命周期 虚拟机的启动 Java 虚拟机的启动是通过引导类加载器(BootstrapClassLoader )创建一个初始类(initial class)来完成的这个类是虚拟机的具体实现来指定的。 虚拟机的执行 一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序 程序开始执行时它 阅读全文
posted @ 2020-07-29 13:00 Maple_XL 阅读(569) 评论(0) 推荐(0) 编辑
摘要: 类加载器、双亲委派机制和沙箱安全机制 类加载器 作用:加载Class文件 类加载流程: 加载 >链接(验证-->准备 >解析) >初始化 JVM支持两种类型的类加载器,分别为引导类加载器(Bootstrap Class Loader)和自定义类加载器(User-Defined ClassLoader 阅读全文
posted @ 2020-07-29 12:49 Maple_XL 阅读(573) 评论(0) 推荐(0) 编辑
摘要: JVM的体系结构 按照功能分 按照内存分 下一篇:类加载器、双亲委派机制和沙箱安全机制 阅读全文
posted @ 2020-07-29 12:37 Maple_XL 阅读(111) 评论(0) 推荐(0) 编辑