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. 典型 ...
随机推荐
- git工具
1.Git Bash常用命令: pwd 当前工作目录 clear 清屏 ls 列举当前目录下的文件及文件夹 cd 更改目录 mkdir 创建目录 touch 创建空文件 cp 拷 ...
- 基于Spring3 MVC实现基于form表单文件上传
http://blog.csdn.net/jia20003/article/details/8474374/
- 构建之法--初识Git
该作业来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2103 GitHub地址:https://github.com/GVic ...
- node的cookie-parser和express-session
let express = require('express'); let cookieParser = require('cookie-parser'); let expressSession = ...
- 日常工作: 应用服务器Oracle驱动问题说明
1. .net使用Oracle驱动的发展等 作为.net线的产品的ERP产品 最初的版本 使用了.net 1.1发布时 微软提供的Oracle的驱动 但是后续微软的.net产品线貌似没有继续发展相应的 ...
- python模块_多重继承的MRO
MRO(Method Resolution Order):方法解析顺序.Python语言包含了很多优秀的特性,其中多重继承就是其中之一,但是多重继承会引发很多问题,比如二义性,Python中一切皆引用 ...
- ES next & Async Await
ES next & Async Await https://jestjs.io/docs/en/asynchronous#async-await ES7 new async () => ...
- C# 网络请求
C#自带网络请求 由于偶尔会用到服务端请求,写下随笔,以便下次使用 . var Url = "http://rueiqiang.vicp.net/api/Franchisee/QueryIn ...
- BZOJ2863[SHOI2012]魔法树——树链剖分+线段树
题目描述 输入 输出 样例输入 4 0 1 1 2 2 3 4 Add 1 3 1 Query 0 Query 1 Query 2 样例输出 3 3 2 树链剖分模板题,路径修改子树查询,注意节点 ...
- BZOJ3963 WF2011MachineWorks(动态规划+斜率优化+cdq分治)
按卖出时间排序后,设f[i]为买下第i台机器后的当前最大收益,则显然有f[i]=max{f[j]+gj*(di-dj-1)+rj-pi},且若此值<0,应设为-inf以表示无法购买第i台机器. ...