Java 虚拟机
G5513
勿忘初心
展开
-
class类文件结构
一、平台无关性:Java的无关性的实现,是由于Java源代码编译后生成的存储字节码的文件,即Class文件,以及Java虚拟机的实现。无关性包括:平台无关性以及语言无关性。(1)平台无关性,是指java代码可以运行在不同操作系统的虚拟机上面,因为不同的操作系统都有各自的Java虚拟机,从而实现程序的“一次编写,到处运行”。(2)语言无关性是指Java虚拟机能运行除Java以外的代码,JVM执...转载 2019-03-31 21:18:50 · 155 阅读 · 0 评论 -
为什么新生代内存需要有两个Survivor区
在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区?1、为什么要有Survivor区:先不去想为什么有两个Survivor区,第一个问题是,设置Survivor区的意义在哪里?如果没有Survivor,Eden区每进行一次Minor GC,存活的对象就会被送到老年代。老年代很快被填满,触发Major GC(因为Major GC一般伴随着Minor GC,也可以看做...转载 2019-04-01 10:23:19 · 256 阅读 · 0 评论 -
常见JVM参数配置和GC性能优化
一、常见的JVM参数配置:1、垃圾回收统计信息:-XX:+PrintGC 打印GC简要信息-XX:+PrintGCDetails打印GC的详细信息-XX:+PrintGCTimeStamps打印CG发生的时间戳-Xloggc:log/gc.log 指定GC log的位置,以文件输出-XX:+PrintHeapAtGC 每一次GC前和GC后,都打印堆信息。2、堆设置:-Xms...转载 2019-03-31 21:50:32 · 328 阅读 · 0 评论 -
性能监控与故障处理工具
概述:给一个系统定位问题的时候,知识、经验是关键基础,数据是依据。工具是运用知识处理数据的手段。这里说的数据包括:运行日志、异常堆栈、GC日志、线程快照文件(threaddump/javacore文件)、堆转储快照(heapdump/hprof文件)等。JDK的命令行工具:JDK的命令行工具大多数是对jdk/lib/tools.jar类库的一层薄包装而已,它们的主要功能代码是在tools类库中...转载 2019-03-31 21:42:19 · 204 阅读 · 0 评论 -
七种垃圾收集器特点、优劣势、及使用场景
HotSpot JVM:上面有7种收集器,分为两块,上面为新生代收集器,下面是老年代收集器。如果两个收集器之间存在连线,就说明它们可以搭配使用。一、Serial(串行GC)收集器:Serial收集器是一个新生代收集器,单线程执行,使用复制算法。它在进行垃圾收集时,必须暂停其他所有的工作线程(用户线程)。对于限定单个CPU的环境来说,由于没有线程交互的开销,可以获得最高的单线程收集效率。是...转载 2019-03-31 21:37:14 · 701 阅读 · 0 评论 -
垃圾收集与内存分配策略
一、确认对象是否存活:垃圾收集器在对堆进行回收前,首先要做的事情就是确定对象是否还存活,判断对象是否存活主要有两种算法:引用计数算法和可达性分析算法。1、引用计数算法:对象创建时,给对象添加一个引用计数器,每当有一个地方引用到它时,计数器值加1,;引用失效时,计数器值减1;当计数值值为0时,这个对象就是不可能再被引用的。2、可达性分析算法:以“GC Roots”对象为起点,从这些节点向下搜索...转载 2019-03-31 21:31:20 · 147 阅读 · 0 评论 -
运行时内存数据区域、对象内存分配与访问
一、Java运行时内存中的数据区域: 每一个Java程序启动后,会获得一个JVM的实例,用来管理内存。Java 虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有个字的用途,以及创建和销毁时间。Java虚拟机所管理的内存将会包括以下几个运行时数据区域:1、程序计数器:程序计数器是一块较小的空间,是当前线程执行的字节码的行号指示器,字节码解释器工...转载 2019-03-31 21:29:39 · 292 阅读 · 0 评论 -
类加载器与双亲委派模型
一、类加载器:类加载器的任务是根据一个类的全限定名来读取此类的二进制字节流到JVM中,然后转换为一个与目标类对应的java.lang.Class对象实例,在虚拟机默认提供了3种类加载器,引导类加载器(Bootstrap)、扩展类加载器(Extension)、应用类加载器(AppClassLoader),如果有必要还可以加入自己定义的类加载器。对于任意一个类,都需要由加载它的类加载器和类的全限定...转载 2019-03-31 21:26:34 · 198 阅读 · 0 评论 -
类加载机制、类的加载过程
一、什么是虚拟机的类加载机制:代码在编译后,就会生成java虚拟机能够识别的二进制字节流class文件,class文件中描述的各种信息,都需要加载到虚拟机之中才能运行和使用。虚拟机把类的数据从class文件加载到内存,并对数据进行校检,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,就是类的加载机制。类从加载到虚拟机内存开始,到卸载出内存结束,整个生命周期包括七个阶段:加载-&...转载 2019-03-31 21:23:11 · 1035 阅读 · 0 评论 -
JVM 之 G1收集器
G1收集器概述从JDK(1.3)开始,HotSpot团队一直努力朝着高效收集、减少停顿(STW: Stop The World)的方向努力,也贡献了从串行Serial收集器、到并行收集器Parallerl收集器,再到CMS并发收集器,乃至如今的G1在内的一系列优秀的垃圾收集器。G1(Garbage First)垃圾收集器是当今垃圾回收技术最前沿的成果之一。早在JDK7就已加入JVM的收集器大家...转载 2019-05-07 21:21:17 · 479 阅读 · 0 评论