VisualVM【实践 01】工具VisualVM下载使用及插件Visual GC示例说明HashMap初始化容量initialCapacity的影响(源码及visualvm_215.zip分享)

简介: VisualVM【实践 01】工具VisualVM下载使用及插件Visual GC示例说明HashMap初始化容量initialCapacity的影响(源码及visualvm_215.zip分享)

VisualVM【官网】很难下载,懂得都懂 😢,简单叙述一下下载的过程:

  • 使用PC各种浏览器失败【❌】
  • 使用Android手机多个浏览器失败【❌】
  • 使用IOS手机多个浏览器,仅有Safari浏览器成功【🆗】

大家可以体会一下😃 当然,如果不想安装,可以直接在已安装的JDK目录下的bin内找到jvisualvm.exe而且是汉化版本的。网盘地址,有需要的小伙伴儿可以进行下载。

链接:https://pan.baidu.com/s/1PC6iewD8GvmD898spKT0tw

提取码:gow5

1.Visual VM 简介

来自官网的介绍:

简单翻译:

All-in-One Java 故障诊断工具: VisualVM 是一个集成命令行 JDK 工具和轻量级概要分析功能的可视化工具。设计用于开发和生产时使用。

对比一下JDK自带版本和下载的最新版本区别:

总结一下区别:

  • JDK自带版本为汉化版本
  • 安装的插件版本不同
  • UI新版本稍好(JDK8可是6年前的东西了)

2. Visual GC 使用

2.1 插件安装

需要注意的是有可能安装失败,失败不可怕,重试几次就行了,具体安装过程这里不再赘述。插件安装步骤如下:

2.2 插件使用

安装后即可使用,部分工具需要进行配置,Visual GC 界面如下:

3.测试

项目中有一个这么一段代码new HashMap<>(2000000)大家知道 HashMap 最好是进行初始容量的设置,不设置则初始容量为static final int DEFAULT_INITIAL_CAPACITY = 1 << 4但是这个设置大小到底有没有实质上的影响呢?

3.1 代码

public class TestHashMapInitialCapacity {
    public static void main(String[] args) throws Exception {
      // 5s的倒计时是为了有时间打开 Visual GC 界面
        int sleepTime = 5;
        for (int i = sleepTime; i > 0; i--) {
            Thread.sleep(1000);
            System.out.println("CountDown:" + i);
        }
        HashMap<String, String> map = new HashMap<>(2000000);
        int itemSize = 128;
        String str = "HelloWorldHelloWorldHelloWorldHelloWorldHelloWorldHelloWorld!";
        for (int i = 1; i <= itemSize; i++) {
            Thread.sleep(100);
            map.put(str + i, str + i);
            System.out.println("i = " + i + ", map size = " + map.size() + ", map capacity = " + tableLength(map));
        }
    }
    /**
     * 用于查询 HashMap 实例对象的容量
     *
     * @param hashMap HashMap实例对象
     * @return 容量
     * @throws Exception 可能的异常
     */
    private static int tableLength(HashMap<?, ?> hashMap) throws Exception {
        Field table = HashMap.class.getDeclaredField("table");
        table.setAccessible(true);
        Object[] obj = (Object[]) table.get(hashMap);
        return obj.length;
    }
}

3.2 过程

初始容量从2->20000->200000000实际初始容量为2(21),32768(215),268435456(228)。

2 新生代的使用空间19.890M

20000 新生代的使用空间21.171M

200000000 新生代的使用空间21.810M老年代的使用空间为1.000G(10000000512M)

3.2 总结

通过以上测试可以说明以下实时:

  • HashMap对象是在put第一个元素时进行初始化的
  • 初始化容量时会分配空间
  • 为了消除存储字符串的影响初始化后仅放入一个对象的空间为(18.608M->18.609M->18.583M+1G

4.总结

工具很有针对性,具体使用还是要进行一定的学习,有很多插件可以使用,功能强大。

目录
相关文章
|
24天前
|
Java 编译器 开发工具
Idea启动运行“错误:java: 无效的源发行版: 13”,如何解决?
Idea启动运行“错误:java: 无效的源发行版: 13”,如何解决?
Idea启动运行“错误:java: 无效的源发行版: 13”,如何解决?
|
6月前
|
Java
JVM学习笔记-如何在IDEA打印JVM的GC日志信息
若要在Idea上打印JVM相应GC日志,其实只需在Run/Debug Configurations上进行设置即可。
66 0
|
存储 运维 监控
使用jvisualvm配合Visual GC插件监控Java程序详细总结
本节将会介绍一下jvisualvm的特性及作用、各个功能是如何使用的、最后会介绍jvisualvm的插件Visual GC的安装及使用
使用jvisualvm配合Visual GC插件监控Java程序详细总结
|
12月前
|
Java
Java 实现批量重命名,亲测可用(精简版)
Java 实现批量重命名,亲测可用(精简版)
|
存储 JSON 缓存
在 VS Code 中使用 GraalVM 和 VisualVM 进行性能和内存分析
在 VS Code 中使用 GraalVM 和 VisualVM 进行性能和内存分析
331 0
在 VS Code 中使用 GraalVM 和 VisualVM 进行性能和内存分析
|
Java 数据安全/隐私保护 Windows
idea2022版本下载安装配置卸载(包含运行第一个java程序教程)详细步骤
JDK和IDEA的关系举个例子 JDK:武器(java开发集成环境) IDEA:战士 (java开发软件)
378 0
idea2022版本下载安装配置卸载(包含运行第一个java程序教程)详细步骤
|
Java Python
Python开发基础总结(八)GC+代码错误检查+运行+性能+其他
Python开发基础总结(八)GC+代码错误检查+运行+性能+其他
|
存储 算法 Java
八张图彻底了解JDK8 GC调优秘籍-附PDF下载
八张图彻底了解JDK8 GC调优秘籍-附PDF下载
八张图彻底了解JDK8 GC调优秘籍-附PDF下载
|
存储 缓存 Java
一文了解JDK12 13 14 GC调优秘籍-附PDF下载
一文了解JDK12 13 14 GC调优秘籍-附PDF下载
一文了解JDK12 13 14 GC调优秘籍-附PDF下载
|
算法 Java
【Java 虚拟机原理】垃圾回收算法( Java VisualVM 工具 | 安装 Visual GC 插件 | 使用 Java VisualVM 分析 GC 内存 )
【Java 虚拟机原理】垃圾回收算法( Java VisualVM 工具 | 安装 Visual GC 插件 | 使用 Java VisualVM 分析 GC 内存 )
253 0
【Java 虚拟机原理】垃圾回收算法( Java VisualVM 工具 | 安装 Visual GC 插件 | 使用 Java VisualVM 分析 GC 内存 )