![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java 虚拟机
文章平均质量分 96
高国藩
这个作者很懒,什么都没留下…
展开
-
JVM 命令工具集合
Java通过jvm自己管理内存,同时Java提供了一些命令行工具,用于查看内存使用情况。这里主要介绍一下jstat、jmap命令以及相关工具。 一、jstat查看 gc实时执行情况jstat命令命令格式:jstat [Options] vmid [interval] [count] 命令参数说明:Options,一般使用 -gcutil 或 -gc 查看gc 情况...原创 2018-08-20 15:05:49 · 7861 阅读 · 0 评论 -
JVM GC日志分析
一、GC日志的格式分析在讲述GC日志之前,我们先来运行下面这段代码package com.example;public class TestMinorGC { private static final int _1MB = 1024*1024; public static void testAllocation() { byte[] allocati...原创 2018-08-20 15:09:49 · 8209 阅读 · 0 评论 -
JVM 垃圾回收器
JVM垃圾收集算法 JVM垃圾收集算法有四种:标记-清除算法、复制算法、标记-整理算法、分代收集算法 标记-清除算法: 该算法如同它的名字一样,分为两个阶段:标记、清除。首先标记出所有需要回收的对象,然后,统一清除这些被标记的对象。该算法的缺点是:1、效率不高;2、产生大量不连续的内存碎片,导致有大量内存剩余的情况下,由于,没有连续的空间来存放...原创 2018-08-20 16:00:24 · 8103 阅读 · 0 评论 -
JVM 对象分配
下面我们再来看下JVM的一些内存分配与回收策略:(A) 对象分配规则 1.对象优先分配在Eden区,如果Eden区没有足够的空间时,虚拟机执行一次Minor GC。 2.大对象直接进入老年代(大对象是指需要大量连续内存空间的对象)。这样做的目的是避免在Eden区和两个Survivor区之间发生大量的内存拷贝。通过参数-XX:PretenureSizeThreshold=314...原创 2018-08-20 16:51:04 · 8906 阅读 · 0 评论 -
Java 逃逸分析
在Java的编译体系中,一个Java的源代码文件变成计算机可执行的机器指令的过程中,需要经过两段编译,第一段是把.java文件转换成.class文件。第二段编译是把.class转换成机器指令的过程。第一段编译就是javac命令。在第二编译阶段,JVM 通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译。很显然,经过解释执行,其执行速度必然会比可执行的二进制字节码程序慢很多。这就...原创 2018-12-27 15:06:22 · 184 阅读 · 0 评论 -
Java 锁与对象头
一:对象头HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。 HotSpot虚拟机的对象头(Object Header)包括两部分信息,第一部分用于存储对象自身的运行时数据, 如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等等,这部分数...原创 2018-12-28 13:27:34 · 706 阅读 · 0 评论