深入理解java虚拟机

要讲的内容

了解历史

垃圾回收机制

性能监控工具

性能调优案例实战

认识类的文件结构

类加载机制

字节码执行引擎

虚拟机编译及运行时优化

Java线程高级

1. 环境搭建

安装jdk

2. 内存溢出场景模拟

public class Test01 {

public static void main(String[] args) {

//测试内存溢出

List list = new ArrayList();

while(true) {

list.add(new Demo());

}

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

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

//OutOfMemoryError

}

}

class Demo{

}

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

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

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

下载解压后打开

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

然后生成一个

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

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

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

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

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

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

Jvm 的可视化监控工具

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

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

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

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

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

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

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

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

Java 之父

詹姆斯  高林斯

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

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

深度理解java jvm,深度理解JVM相关推荐

  1. java stw_快速理解Java垃圾回收和jvm中的stw

    Java中Stop-The-World机制简称STW,是在执行垃圾收集算法时,Java应用程序的其他所有线程都被挂起(除了垃圾收集帮助器之外).Java中一种全局暂停现象,全局停顿,所有Java代码停 ...

  2. linux查看java虚拟机内存_深入理解java虚拟机(linux与jvm内存关系)

    本文转载自美团技术团队发表的同名文章 https://tech.meituan.com/linux-jvm-memory.html 一, linux与进程内存模型 要理解jvm最重要的一点是要知道jv ...

  3. java虚拟机和内存的关系_深入理解java虚拟机(linux与jvm内存关系)

    本文转载自美团技术团队发表的同名文章 https://tech.meituan.com/linux-jvm-memory.html 一, linux与进程内存模型 要理解jvm最重要的一点是要知道jv ...

  4. java多态的理解(java多态的理解和使用 - 阿猫阿狗)

    谈谈你对Java中的多态的理解.(为什么要使用多态,有什么好处,一般用在什么场合) 面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同 ...

  5. 深入理解java虚拟机之类加载机制

    回顾我们<深入理解java虚拟机之初识JVM>,我们了解了类加载的过程,我们知道了类加载的生命周期有以下七个阶段:加载.验证.准备.解析.初始化.使用.卸载.其中解析和初始化交换顺序可以实 ...

  6. 深入理解java虚拟机_深入理解Java类加载

    本文目的: 深入理解Java类加载机制; 理解各个类加载器特别是线程上下文加载器; Java虚拟机类加载机制 虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验.转换解析和初始化,最 ...

  7. 基于JVM原理、JMM模型和CPU缓存模型深入理解Java并发编程

    许多以Java多线程开发为主题的技术书籍,都会把对Java虚拟机和Java内存模型的讲解,作为讲授Java并发编程开发的主要内容,有的还深入到计算机系统的内存.CPU.缓存等予以说明.实际上,在实际的 ...

  8. java 内存溢出的分类_【深入理解Java虚拟机】读后感:JVM内存划分与内存溢出小结...

    扫码关注公众号:Java 技术驿站 发送:vip 将链接复制到本浏览器,永久解锁本站全部文章 [公众号:Java 技术驿站] [加作者微信交流技术,拉技术群] # JVM内存划分与内存溢出小结 # 1 ...

  9. jvm对于java的意义_谈谈对JVM的理解

    JVM可谓是学习JAVA基础中的基础了,但仍有不少同学对JVM概念还是比较模糊,甚至没有听说过,对java的理解也只是在基础语法 层面,本文就将对JVM进行初步介绍,因篇幅所限,只能介绍JVM基础,如 ...

最新文章

  1. 《JavaEE开发的颠覆者——Spring Boot实战》是一本好书
  2. 2016年全球芯片市场或衰退2.13%
  3. 【Android开发】构建Android源码编译环境
  4. html页面加文字横向滚动,js实现文字横向滚动
  5. 2.1.2 操作系统之进程的状态(运行、就绪、阻塞、创建、终止)及转换(就绪-运行、运行-就绪、运行-阻塞、阻塞-就绪)
  6. swift 将图片保存到本地_如何保存微博的所有图片链接并下载图片到本地
  7. python123.io作业_Python自动化开发学习3
  8. 自动驾驶-MPC控制器
  9. 有一个女孩 名叫花木兰
  10. java文件服务,苹果相关浏览器文件名乱码而其他例如谷歌浏览器不乱码
  11. 计算机科学中的数学(一)
  12. LeetCode每日一题--有序队列(整理最小表示法)
  13. 【重识前端】什么是BFC、IFC、GFC 和 FFC
  14. 漫步数学分析二十三——级数的积分与微分
  15. STM32蓝牙控制循迹避障小车源代码——4.蓝牙控制
  16. 课题申报书范文_课题申报书(范文5篇)完整版
  17. Danmo 的学习之路(HTML——CSS)
  18. 卡迪夫城市大学计算机专业硕士,2020年卡迪夫城市大学研究生(硕士)学制是几年...
  19. 解决电脑无法复制粘贴
  20. 【附源码】Python计算机毕业设计网上宠物店预约系统

热门文章

  1. Redis 键值过期操作
  2. Java对象都是在堆上分配空间吗?答案竟然是...
  3. Visual Studio 2012资源管理器里单击打开改为双击打开文件
  4. Microsoft Visual C++ Runtime Library 错误解决办法
  5. Java中Thread类的方法简介
  6. flutter打包的app有多大_前端大势所趋---Flutter 这篇文章会让你行动起来
  7. python制作收费标准_在Python中做一次简单定制1
  8. 通达信公式大全_通达信MACD金叉的选股公式大全
  9. datatable怎么根据两列分组_谈谈怎么做服务隔离
  10. 制作 mysql的rpm文件_自制mysql.rpm安装包