zoukankan      html  css  js  c++  java
  • Java基础-考察JVM内部结构的常用工具介绍

                 Java基础-考察JVM内部结构的常用工具介绍

                                        作者:尹正杰

    版权声明:原创作品,谢绝转载!否则将追究法律责任。

      我们可以通过jvisualvm.exe考察jvm内部结构。而jvisualvm.exe这个程序存放在JDK的安装目录下的bin目录中。当然在JDK的安装目录下的bin目录中还有jmap以及jconsole两个工具都是可以查看JVM的堆内存结构的哟!接下来我会为大家展示这三个工具的方法,他们各自有各自的优点,如果是Windows开发环境的话,我个人比较喜欢jvisualvm的,如果在Linux开发环境下,推荐大家使用jmap工具查看堆内存结构。

    一.jvisualvm.exe安装Visual GC插件

      在使用jvisualvm.exe过程中需要安装visualgc插件才能看到详细信息,具体安装步骤如下: 

    1>.以管理员身份运行jvisualvm.exe

    2>.点击工具--->插件

     

    3>.添加新的URL(https://visualvm.github.io/uc/8u131/updates.xml.gz)

    4>.取消之前的插件

    5>.安装Visual GC插件

     

    6>.点击下一步

    7>.点击安装

    8>.等待安装完毕

    9>.安装成功后会自动激活

    二.通过jvisualvm.exe考察jvm内部结构

    1>.打开VisualJVM

    2>.编辑Edit Configurations...

    3>.配置年老代,伊甸区,幸存一区和幸存二区大小均为100M,点击ok(-Xmx400m -Xms400m -XX:MaxNewSize=300m -XX:NewSize=300m -XX:SurvivorRatio=1)

    调优JVM常用参数
    ----------------------------
        -Xss2m                    //栈空间,默认是1m
        -Xmx500m                //最大堆
        -Xms500m                //初始堆
        -Xmn150m                //设置年轻带的大小 ,每个区至少要保留512K的空间。
    
        -XX:NewSize=300m        //年轻代初始空间-Xmn300m
        -XX:MaxNewSize=300m        //年轻代最大空间
    
        -XX:NewRatio=1            //设置年老代是年轻的倍数,默认是2.
        -XX:SurvivorRatio=2        //设置伊甸区是单个幸存区的倍数,默认是6.

    4>.编写导致栈内存溢出的代码并以Debug模式运行

     1 /*
     2 @author :yinzhengjie
     3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
     4 EMAIL:y1053419035@qq.com
     5 */
     6 
     7 package cn.org.yinzhengjie.jvm;
     8 
     9 import org.junit.Test;
    10 
    11 public class TestJVM {
    12 
    13     @Test
    14     public void testStackMemoryOverflow(){
    15         recursion(1);
    16     }
    17 
    18 
    19 
    20     public void recursion(int n){
    21         System.out.println(n);
    22         recursion(n);
    23         n++;
    24     }
    25 }
    TestJVM.java 文件内容

    5>.查看Java中的VisualIVM

    三.Linux操作系统通过jmap考察jvm内部结构

    1>.查看当前运行的JAVA进程

     

    2>.jmap用法:jmap -heap pid

    3>.查看JVM的堆中的信息

    四.通过jconsole考察堆结构

    1>.运行jconsole工具

     

    2>.选择我们测试的进程

     

    3>.选择不安全的连接

    4>.查看对内存信息

  • 相关阅读:
    管理配置KVM,热添加、热迁移
    《google工作整理术》21条原则
    【教你玩转云计算】在阿里云一键安装快速部署Oracle11g 【转】
    Oracle数据库开启归档日志及rman备份情况查询
    【转】CentOS7一键部署OpenStack
    【转】基于openstack安装部署私有云详细图文教程
    Oracle Database 12c数据库中文配置安装图解教程(详细安装步骤)
    精通Linux(第2版) 第3章 设备管理
    精通Linux(第2版) 第2章 基础命令和目录结构
    四种IO 模型
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/9279283.html
Copyright © 2011-2022 走看看