深度理解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,一经查实,立即删除!

相关文章

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:…

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≯≯≯≯≯≯≯弓晋丽 .程…

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

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

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

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

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

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

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

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

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

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

sdp ddp内存怎么分_旗舰手机跑分66万+,缩短与PC差距,手机成生产力工具也许不是梦...

现在人们无论是在买电脑还是买手机的时候总是喜欢拿跑分来衡量产品的硬件性能,其实长时间的使用产品才是体验产品性能最真实的体验,但是往往需要先有机会拿到产品才行。除此之外也许跑分是最直观的手段。虽然跑分不代表最终体验,但是通过横向…

安卓虚拟机_安卓中的安卓虚拟机,那些闪退应用有救了

“我们坚持最优质的分享,努力做你身边的资源助手“VMOS VMOS堪称安卓中的安卓虚拟机,可以在手机里面再运行一个全新的安卓系统,由于是独立在运行的操作系统,可以运用的场景非常多,例如多开应用&#xf…

c语言表达式与变量区别,C语言实战开发————基础秘籍1(C与C++的区别,输入输出,函数,变量,运算符)...

(一)学前思考学习目标1 面试2 后期服务 :JNI(C语言)C JAVA 编程思想 编程能力(二)所学内容C语言与C的区别1.C是面向过程 C面向对象2.面向过程与面向对象最大的区别在于前者更直接,但后者略显含蓄,相较于前者而言,后者更为完善,正如…

电脑一开机出rebootand_北京联想电脑维修点【蓝伟博达笔记本维修吧】

联想笔记本电脑维修,多年从事联想笔记本的维修,我公司总结出联想leovo笔记本电脑常见故障,能准确快速判断出联想笔记本出现该故障的相应损坏部件,欢迎联想电脑维修 北京联想笔记本电脑主板维修。用户到店体验、免费检测、一对一维修服务、检测免费,修不好…

c语言用while和if颠倒整数,【连载】(循环执行语句while和if)乐创DIY C语言讲义​——3.8节(3)...

2 循环执行语句计算机有一个强大的能力,快速地重复执行某一计算,这种重复计算多次的方法,是通过软件中的循环执行语句去实现的。C语言中实现循环语句结构的方式有三种,第一种为“for”循环,第二种为“while”循环&…

怎样查看电脑系统版本_用什么软件查维修记录 思域HATCHBACK怎样查询维保记录_汽车事故车查询...

请点击上方快速关注思域HATCHBACK很火。这款被誉为“国产Type R”的思域HATCHBACK版本在三厢车的基础上,集成了更运动化乃至更具战斗感的套件包围、中置排气和手动变速箱。对于本田粉、改装粉、操控粉们而言,“C位客信仰落地”的名言,就像是火…

安卓4.4.4安装哪个微信版本_??微信又更新!暗黑模式可独立设置,新增群接龙固定入口...

前段时间微信支持设置暗黑模式引起了大众的关注,但有小伙伴表示:为啥微信不能单独设置,要随系统变化?这下好了,微信安卓版发布7.0.15内测版本,私信「安卓内测版」即可获取。可以看到,本次内测更…

某系统有6台输出设备 有多个进程均需要使用2台_系统设计硬核知识(4)——操作系统的设备管理...

在计算机系统中,除了处理器和内存之外,其他的大部分硬设备称为外部设备。它包括输入/输出设备,辅存设备及终端设备等。这些设备种类繁多,特性各异,操作方式的差异很大,从而使操作系统的设备管理变得十分繁杂…

esp8266单片机透传_基于WeMos D1(ESP8266)的校园卡门禁系统

刷卡https://www.zhihu.com/video/1107591334902345728电脑端控制https://www.zhihu.com/video/1107591363079733248手机端控制https://www.zhihu.com/video/1107591388040052736一、项目背景随着网络技术和嵌入式技术的发展,物联网开始引领新一波热潮。制作这个项目…

c语言调用android surface,Android GUI SurfaceFlinger

本文涉及的源代码基于 Android-7.1.1r。一、Android GUI 框架SurfaceFlinger 是 Android GUI 的核心,但是从 OpenGL_ES 的角度来看,它也只是个“应用程序”。Android 的显示系统大致框架图下图所示:GUI_STRUCT.png下面就“由下向上”来逐一分…

bat 取得服务列表_解读浩泽净水2018业绩:稳定增长背后的服务深化和科技跃进...

北京时间3月26日凌晨,苹果以一场没有任何硬件亮相的“软”发布会,宣告公司将向服务转型,欲以可持续的服务收入抵消iPhone遭遇的增长瓶颈。此举在大洋彼岸的中国引发了热烈反响。分析师们普遍认为苹果在“偷师”中国的BAT等互联网企业&#xf…

c语言实现多目标优化,MOPSO 多目标例子群优化算法

近年来,基于启发式的多目标优化技术得到了很大的发展,研究表明该技术比经典方法更实用和高效。有代表性的多目标优化算法主要有NSGA、NSGA-II、SPEA、SPEA2、PAES和PESA等。粒子群优化(PSO)算法是一种模拟社会行为的、基于群体智能的进化技术&#xff0c…