深度理解java jvm,深度理解JVM

深入理解java虚拟机

要讲的内容

了解历史

垃圾回收机制

性能监控工具

性能调优案例实战

认识类的文件结构

类加载机制

字节码执行引擎

虚拟机编译及运行时优化

Java线程高级

1. 环境搭建

安装jdk

729632784c8bc780baaa59c8b25d4a2b.png

2. 内存溢出场景模拟

public class Test01 {

public static void main(String[] args) {

//测试内存溢出

List list = new ArrayList();

while(true) {

list.add(new Demo());

}

//不停的创建对象会一直消耗堆内存知道内存消耗完(其实不会真的将8G的内存都消耗完)

//当达到一个上线时就会报出这个错误了,这时就会报出一个内存溢出

//OutOfMemoryError

}

}

class Demo{

}

fd4876ba0d0ac6e243de0573168bcf7d.png

651156786e99d65fdeadc34b3c489cac.png

可以在你的项目下找到这个快照的错误文件

但是我们是看不懂的所以需要到http://www.eclipse.org/mat/downloads.php去下载一个eclipse的MemoryAnalyzer分析工具

如果你直接下载会非常慢所以选择一个其他的镜像这样下载就会快点

下载解压后打开

f740a8ee8c0d892657b04cd49ce3d324.png

点击file->Open Heap Dump 选中产生的那个文件

33cf7da3c1d6c952b0e0bbde3f3191bc.png

然后生成一个

9b5d40b8c9c2c1d52b5c33b7ac13cb52.png

选中这个图标可以查看我们的堆内存运行情况 加载堆内存的信息

74c11eaf478f0fa397064a5902beae9e.png

这个就代表很可能在main里面出现问题了 占得百分比高达95.6%

533558a9b7d2c22a7ceb0a6ba8bd27d5.png

Shallow Heap 对象本分所占用的内存大小不包含它的引用对象

Retained Heap 代表当前对象的大小包括当前可直接或者间接引用对象的大小的总和。

点开那个占用堆内存最多线程

dc0a81ee4fa50828eda66d3f4d631c88.png

继续点开会发现 他创建了很多个这样的对象造成的堆内存溢出

Jvm 的可视化监控工具

这个工具在哪呢在我们安装的jdk中

因为我们的jdk已经配置在我们的path路径下因此在任何路径下都可以访问的到所以在

命令行中可以输入这个值 会将这个可视化界面弹出来

我们可以看到这个图像化界面只有18k那么真正的代码放在了lib目录下的一个jar包里面

这个jps这个命令会列出来所有的java进程,我们看到有JConsole 这个进程 但是为什么没有jps这个进程呢是因为

这个命令执行完之后就结束了。

当我们点进去就能对这个进程进行监控

我们大概就能看到这样的窗口了

Java 之父

詹姆斯  高林斯

标签:这个,JVM,jdk,理解,内存,Heap,深度,我们,溢出

来源: https://www.cnblogs.com/zhulina-917/p/11387900.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559650.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php用json_encode编码后乱码,php json_encode()函数中文编码乱码解决方法_PHP教程

在我使用php json_encode()时,如果是英文或数字没一点问题,但是用到中文是居然出现不可识别的中文乱码了,下面看我解决json_encode中文乱码方法。在网上找到一种解决方法:代码如下复制代码后来请教了别人,还可以用base…

oracle 根据用户备份,Oracle基于用户的备份及恢复

要执行exp或imp命令,首先: 1.看Oracle安装目录的bin目录下有没有 exp.exe和 imp.exe这两个文件,要不然可能无法执行这个命令的要执行exp或imp命令,首先:1.看Oracle安装目录的bin目录下有没有 exp.exe和 imp.exe这两个文…

oracle数据库sql的执行过程,Oracle体系结构之SQL语句的执行过程

一般来说,数据库处理SQL都会经过三个过程:解析(parse)、执行(exec)、返回结果(fetch)1.解析当用户发起一个SQL语句时,Oracle通过Server Process 接收SQL语句到达oracle实例,并在Shared pool 中的 Library Cache 查找是否存在该语句对应执行计划的缓存。如…

otb100matlab,ECO for tracking 在 OTB100 基准测试和 VOT2016 数据集中的实验结果

目前本文所涉内容均未使用图形处理器。运行在有图形处理器环境下的实验将在稍后补充,敬请关注。需要准备的文章和工具有:一、集成 OTB1001.1 下载基准测试在该目录中可以看到:trackers 目录中已经包含了若干跟踪算法。而我们要做的就是把 ECO…

如何设置oracle_home变量,oracle-如何在Ubuntu 9.x上正确设置ORACLE_HOME变量?

oracle-如何在Ubuntu 9.x上正确设置ORACLE_HOME变量?我遇到了与此处列出的问题相同的问题:尽管我没有丢失密码,但如何恢复或更改Oracle sysdba密码,我最初在configure脚本中输入了两次,然后登录(localhost:…

oracle脱机什么意思,脱机的是什么意思

1. 或者是,将记录传送到脱机系统去处理,以降低交换机的负荷。Alternatively, the records can be transferred to an off-line system for processing, to reduce the load on the exchange.2. 虽然第三方可用的应用软件很少,但在 Windows 1.…

oracle adg 备份,Oracle Physical Dataguard环境使用RMAN备份和恢复

Oracle Physical Dataguard环境使用RMAN备份和恢复由于Physical Dataguard使用的是块恢复技术来保持和PRIMARY的一致性,因此可以在STANDBY上进行rman备份,从而减轻PRIMARY的压力.当PRIMARY出现数据库故障时,可以使用在STANDBY上的备份来进行恢…

matlab遗传算法配送路径,基于Matlab物流配送路径优化问题遗传算法的实现

维普资讯 http://doc.docsou.com第2 9卷总第 1 1 3期物流商坛物流配送路径优化问题遗传算法的实现The Re lz to f Ge tc Al o ih o a ia i n o ne i g r t m f VRP Ba e o t e M a l b s d n h tap p p p p p p p p p p p p p p ) ≯≯ p p p p ≯ ≯ p≯≯≯≯≯≯≯弓晋丽 .程…

oracle 测试库搭建,Oracle Study之--通过RMAN克隆测试库

Oracle Study之--通过RMAN克隆测试库通过使用数据库备份,DBA可以在同一服务器或其它服务器上建立副本数据库。这个副本数据库可以和主数据库有相同的名称(拷贝)或与主数据库名称不同(克隆)。ORACLE在数据库拷贝和数据库克隆之间惟一不同的是拷贝的数据库不能更改名称…

清空临时表oracle,【Oracle相关】Oracle中如何清空临时表空间

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼【问题】数据库临时表空间占用空间太大,暂用大量磁盘空间。【处理】清空临时表空间Oracle1.启动数据库 startup2.查看当前的数据库默认表空间:SQL>select * from database_properties whereproperty_name…

linux挂载目录到分区,Ubuntu7.10下挂载/home目录到一个分区的方法

最近在一个9.5G的旧硬盘上装了个Ubuntu7.10,在安装时选择了自动分区安装,结果只有两个分区,/和swap,后来觉得一妥,就用gparted重新调整了分区,现在想把砍出事的分区挂载/home目录。昨晚试了一晚都没有弄好&…

linux 内存规划,生产场景怎么对linux系统进行合理规划分区?

分区的根本原则是简单、易用、方便批量管理。根据服务器角色定位建议如下:①单机服务器:如8G内存,300G硬盘分区: /boot 100-200M,swap 16G,内存大小8G*2,/ 80G,/var 20G(也可不分)&a…

linux终端美化,如何美化你的命令行终端Terminal

Linux下的终端是很有魅力的,你可以进行些简单的配置让它变得更加华丽,让枯燥的命令行也变得生动起来。下面进行些配置是我使用的,先看下效果图命令行是以我非常喜欢的Avirl为背景的,同时把终端的字体放大了,字体颜色为…

linux重启服务挂载盘消失,如何处理ECS Linux服务器重启服务器、初始化系统后数据盘不见了的情况...

本文在介绍如何处理ECS Linux服务器重启服务器、初始化系统后数据盘不见了的情况的基础上,重点探讨了其具体步骤,本文内容紧凑,希望大家可以有所收获。ECS Linux服务器重启服务器、初始化系统后数据盘不见了问题现象:Linux系统服务…

linux测试函数耗时tick数,C语言中怎样测验函数执行时间

有4种方法可以达成测算程序运行时间的目的。它们分别是使用clock, times, gettimeofday, getrusage来实现的。下面就来逐一介绍,并比较它们的优劣点。系统测试环境:VirtualBox (Ubuntu 9.10)gcc version 4.4.1libc6 2.10.1-0ubuntu16Core Duo T2500 2GMH…

linux 修改Db2主机名,对DB2服务器主机名的修改的正确操作流程

文章主要描述的是如何正确的对DB2服务器主机名的修改,在实际操作中由于出于多种原因,在DB2数据库的服务器的实际使用过程中,用户有可能对DB2数据库服务器的主机名进行修改,本文详细介绍了修改DB2的主机名需要做的修改工作。环境:产…

x86_64 arm制linux-gcc,arm-linux-gcc 制作

序言:其实,如果没有充裕的时间,交叉编译器完全不用自己建,网上下载直接拿来用就可以了。之所以写这博客,一是为了和大家交流,二是为了防止由于时间的流逝再也找不到当初的笔记。人说好记星不如烂笔头&#…

obs捕获窗口没有窗口_学习工具 | 视频录制软件OBS

小编今天为你们带来了一位新朋友,它就是:OBS了解OBSOBS是免费和开源软件的视频录制和实时流。在 Windows、Mac 或 Linux 上都能够快速轻松地下载并开始流式传输。小知识:流式传输:主要指通过网络传送流媒体(如视频、音频)的技术总…

linux webshell 页面管理,instantbox:30s内快速搭建可通过webshell管理的Linux系统

点击上方蓝色字体,关注我们如何快速搭建一个Linux环境,肯定非docker莫属。但通过instantbox,可以带给我们比docker更好的体验:在不到 30s 内快速搭建一个干净、开箱即用的多个临时的Linux 系统,如Ubuntu、Centos、Arch…

局域网共享工具_局域网文件共享

局域网文件共享的方式都有哪些?局域网文件共享的方式还是比较多的,有几种可参考操作: 在多台电脑上开启网上邻居共享,这样电脑直接打开网上邻居就可以访问对方的文件夹和资料了。 可以安装辅助软件,比如:坚…