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模式运行

 /*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/ package cn.org.yinzhengjie.jvm; import org.junit.Test; public class TestJVM { @Test
public void testStackMemoryOverflow(){
recursion(1);
} public void recursion(int n){
System.out.println(n);
recursion(n);
n++;
}
}

TestJVM.java 文件内容

5>.查看Java中的VisualIVM

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

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

 

2>.jmap用法:jmap -heap pid

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

四.通过jconsole考察堆结构

1>.运行jconsole工具

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

3>.选择不安全的连接

4>.查看对内存信息

Java基础-考察JVM内部结构的常用工具介绍的更多相关文章

  1. 【Java基础】【14正则表达式&常用工具类】

    14.01_常见对象(正则表达式的概述和简单使用) A:正则表达式 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串.其实就是一种规则.有自己特殊的应用. 作用:比如注册邮箱,邮箱有 ...

  2. Java基础技术JVM面试【笔记】

    Java基础技术JVM面试[笔记] JVM JVM 对 java 类的使用总体上可以分为两部分:一是把静态的 class 文件加载到 JVM 内存,二是在 JVM 内存中进行 Java 类的生命周期管 ...

  3. Java基础复习笔记系列 五 常用类

    Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...

  4. Java基础-Eclipse第三方安装包管理工具之Maven

    Java基础-Eclipse第三方安装包管理工具之Maven 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 玩过Linux的小伙伴应该都知道yum吧,我们只要把搭建好的yum仓库配 ...

  5. Java基础篇(JVM)——类加载机制

    这是Java基础篇(JVM)的第二篇文章,紧接着上一篇字节码详解,这篇我们来详解Java的类加载机制,也就是如何把字节码代表的类信息加载进入内存中. 我们知道,不管是根据类新建对象,还是直接使用类变量 ...

  6. Java基础篇(JVM)——字节码详解

    这是Java基础篇(JVM)的第一篇文章,本来想先说说Java类加载机制的,后来想想,JVM的作用是加载编译器编译好的字节码,并解释成机器码,那么首先应该了解字节码,然后再谈加载字节码的类加载机制似乎 ...

  7. 2.Ventuz Designer常用工具介绍

    Ventuz Designer常用工具介绍 1.  打开Ventuz Designer 图1.1 2.  Ventuz Designer第一个界面 图2.1 Recent Projects:最近创建的 ...

  8. 学习游戏服务器开发必看,C++游戏服务器开发常用工具介绍

    C++游戏服务器开发常用工具介绍 在软件开发过程中需要使用的工具类型实属众多,从需求建模到软件测试,从代码编译到工程管理,这些工具都对项目有着不可替代的作用.庄子有云,"吾生也有涯,而知也无 ...

  9. Java基础:JVM垃圾回收算法

    众所周知,Java的垃圾回收是不需要程序员去手动操控的,而是由JVM去完成.本文介绍JVM进行垃圾回收的各种算法. 1. 如何确定某个对象是垃圾 1.1. 引用计数法 1.2. 可达性分析 2. 典型 ...

随机推荐

  1. git心得

    使用Git得到了以下体会: github在新的目录下添加新的文件 git init //在相应的目录下添加 git add //添加目录 git commit -m "first commi ...

  2. QT 子窗口退出全屏

    m_pWidget代表子窗口, 子窗口显示全屏: m_pWidget->setWindowFlags(Qt::Dialog); m_pWidget->showFullScreen(); 子 ...

  3. answer my questions from the book<构建之法>.

    1)何为文档:文档时在一个项目进行的一生中所有记忆的集合.有需求分析.功能设计.在实现功能过程中也可以有一系列文档记录.测试文档等等. 2)结对工作等找队友会花费大量时间致耽误项目否:正如老师所讲,从 ...

  4. 什么是Consul

    什么是Consul Consul文档简要整理 什么是Consul? Consul是一个用来实现分布式系统的服务发现与配置的开源工具.他主要由多个组成部分: 服务发现:客户端通过Consul提供服务,类 ...

  5. 软件工程(GZSD2015)学生博客列表

    2015年贵州师范大学软件工程课程学生博客列表 陈小丽 郑倩 唐洁 周娟 李利思 肖俊 罗文豪 周静 徐明艳 毛涛 邓洪虹 岳庆 李盼 安坤 何亚 涂江凤 张义平 杨明颢 杨家堂 胡贵玲 寿克霞 吴明 ...

  6. David Silver强化学习Lecture3:动态规划

    课件:Lecture 3: Planning by Dynamic Programming 视频:David Silver强化学习第3课 - 动态规划(中文字幕) 动态规划 动态(Dynamic): ...

  7. CodeIgniter中使用base_url()时显示http://::1/ci/

    URL 辅助函数文件包含了一些帮助你处理 URL 的函数. 加载辅助函数后,你可以使用base_url(),site_url(),current_url()等一些列函数,但是有时候你会遇到这种问题,就 ...

  8. 基于Windows Subsystem for Linux (WSL) 【Ubuntu】在WIN10 Home Edition安装Docker

    root@Andy-PC:~# uname -a Linux Andy-PC --Microsoft #-Microsoft Fri Apr :: PST x86_64 x86_64 x86_64 G ...

  9. Eclipse使用Maven2的一次环境清理记录

    1. C:\Users\Administrator\.m2\repository\com\yuanchuangyun\[module,yuanchuangyun-*]相关目录全删除.2. D:\wor ...

  10. java中的equals和==

    下面是我看别人博客和java API总结的 首先得明确一个概念就是: == 的用法   ==比较对象在内存中的地址是否相等.如是是两个基本数据类型变量的比较则比较的是这两个变量值是否相等,若是比较两个 ...