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模式运行
/*
@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内部结构的常用工具介绍的更多相关文章
- 【Java基础】【14正则表达式&常用工具类】
14.01_常见对象(正则表达式的概述和简单使用) A:正则表达式 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串.其实就是一种规则.有自己特殊的应用. 作用:比如注册邮箱,邮箱有 ...
- Java基础技术JVM面试【笔记】
Java基础技术JVM面试[笔记] JVM JVM 对 java 类的使用总体上可以分为两部分:一是把静态的 class 文件加载到 JVM 内存,二是在 JVM 内存中进行 Java 类的生命周期管 ...
- Java基础复习笔记系列 五 常用类
Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...
- Java基础-Eclipse第三方安装包管理工具之Maven
Java基础-Eclipse第三方安装包管理工具之Maven 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 玩过Linux的小伙伴应该都知道yum吧,我们只要把搭建好的yum仓库配 ...
- Java基础篇(JVM)——类加载机制
这是Java基础篇(JVM)的第二篇文章,紧接着上一篇字节码详解,这篇我们来详解Java的类加载机制,也就是如何把字节码代表的类信息加载进入内存中. 我们知道,不管是根据类新建对象,还是直接使用类变量 ...
- Java基础篇(JVM)——字节码详解
这是Java基础篇(JVM)的第一篇文章,本来想先说说Java类加载机制的,后来想想,JVM的作用是加载编译器编译好的字节码,并解释成机器码,那么首先应该了解字节码,然后再谈加载字节码的类加载机制似乎 ...
- 2.Ventuz Designer常用工具介绍
Ventuz Designer常用工具介绍 1. 打开Ventuz Designer 图1.1 2. Ventuz Designer第一个界面 图2.1 Recent Projects:最近创建的 ...
- 学习游戏服务器开发必看,C++游戏服务器开发常用工具介绍
C++游戏服务器开发常用工具介绍 在软件开发过程中需要使用的工具类型实属众多,从需求建模到软件测试,从代码编译到工程管理,这些工具都对项目有着不可替代的作用.庄子有云,"吾生也有涯,而知也无 ...
- Java基础:JVM垃圾回收算法
众所周知,Java的垃圾回收是不需要程序员去手动操控的,而是由JVM去完成.本文介绍JVM进行垃圾回收的各种算法. 1. 如何确定某个对象是垃圾 1.1. 引用计数法 1.2. 可达性分析 2. 典型 ...
随机推荐
- QT QProgressBar QProgressDialog 模态,位置设置,无边框,进度条样式
一 关于模态设置 QProgressDialog可以设置模态(需要在new的时候传入parent),QProgressBar设置不好: 只有dialog可以设置模态,widget不能设置模态(QPr ...
- Minimum Integer CodeForces - 1101A (思维+公式)
You are given qq queries in the following form: Given three integers lili, riri and didi, find minim ...
- TextView设置文字包含中英文时自动换行问题的终极解决方案
情景,正常TextView中设置文本内容中包含中英文时会造成自动换行的问题,影响界面显示效果,如图: 网上很多解决途径,甚至有多三方框架处理,但是效果并不能达到,最终是要如下代码完美解决,效果图如下: ...
- 链表数据结构(C/C++语言实现)
注意:没有使用malloc和free:加了一个头文件,用于清屏和暂停:还有就是一个错误特别容易被忽略,那就是主函数中声明了LinkList p,然后就直接创建链表,忘了给p分配空间.一定要先初始化链表 ...
- Docker安装指定版本
今天新增一个Docker服务器,Docker安装顺利,启动hello-world测试的时候却出现了问题: $ docker run hello-worldUnable to find image 'h ...
- pycharm5.0 快捷键大全osx
官网链接https://resources.jetbrains.com/assets/products/pycharm/PyCharm_ReferenceCard_mac.pdf 一直想给别人安利py ...
- HashMap, HashTable,HashSet,TreeMap 的时间复杂度
hashSet,hashtable,hashMap 都是基于散列函数, 时间复杂度 O(1) 但是如果太差的话是O(n) TreeSet==>O(log(n))==> 基于树的搜索,只需要 ...
- linux ACL权限
利用这两个指令就可以了: getfacl:获取某個文件的 ACL 设置 setfacl:设置某個文件的 ACL 规范 [root@study ~]# setfacl [-bkRd] [{-m|-x} ...
- Codeforces925C Big Secret 【构造】【贪心】
题目大意:给出异或差分序列,要你任意排列使得原序列递增. 题目分析: 我们在使得异或结果递增的过程中总能找到一个值使得它的最高位的1对应当前值的0.那么我们贪心的选择最高位最低的一个任意值使得它满足这 ...
- UVA-1572
解题思路: 之前看到的骚操作,主要思想就是把两个面合在一起看成两个点相连,最后只要找到一个环就可以无限克隆这个环使得无限延迟. 把符号变成数字如A-变为0,A+变为1,则0^1=1 ,这两个符号可以通 ...