一、JDK JRE JVM关系

JDK:Java SE开发工具包。包含jre,其中包括java编译器javac.exe,打包工具jer.exe。

JRE:Java SE运行时环境,包含JVM所必须的运行时需要的类库和 rt.jar,bin文件相当于是JVM。JRE 提供了库、Java 虚拟机(JVM)和其他组件,用于运行 Java 编程语言、小程序、应用程序。

JVM:虚拟出来的计算机,主要目的是把java程序中的字节码,解析成具体平台系统的机器码,提供平台使用

二、JVM内存模型

jdk1.6:

  • 方法区(常量池)
  • 本地方法栈
  • java虚拟机栈
  • 程序计数器

jdk1.7

  • 方法区(运行时常量池、类常量池)
  • 堆(字符串常量池)
  • 本地方法栈
  • java虚拟机栈
  • 程序计数器

JDK1.8:

  • 元空间(运行时产量池,类常量池)
  • 堆(字符串常量池)
  • 本地方法栈
  • java虚拟机栈
  • 程序计数器

jdk1.7与jdk1.8内存模型区别:

1.去除了方法区(PermGen永久代)转变为 元空间。优点有元空间的大小只受本地内存影响,不会因永久代的内存空间的不足而抛出OutOfMamouryError异常。jdk1.8以前版本的 class和JAR包数据存储在 PermGen下面 ,PermGen 大小是固定的,而且项目之间无法共用,公有的 class,所以比较容易出现OOM异常

JVM堆

可分为两部分

  • 新生代(8:Eden、1:From Servivor、1:To Servivor) -1/3堆空间
  • 老年代  -2/3堆空间

什么时候对象进入老年代?

1.大多数情况对象在新生代Eden分配,当Eden没有足够的空间时将发起一次Minor GC,当Edeng执行完Minor GC后还不足以为对象分配空间,则大对象直接进入老年代, 可以用参数设置大对象直接进入老年代,避免频繁的Minor GC.

2.如果对象在Eden出生,发送Minor GC后然存活,并且能被Survivor容纳,则年龄加1,达到一定年龄后进入老年代,默认为15

垃圾回收机制-GC

垃圾检查方式

  • 引用计数算法:给对象添加一个计数器,每到有一个地方引用时计数器自增1,失效一个时计数器减1,当计数器为0时被GC回收。(缺点:如果两个对象相互引用,则会出现死循环,永远不可被回收)
  • 可达性分析算法:定义一系列GC Roots的起始节点集,从这个节点出发,穷举该集合引用到的全部对象并填充到集合中。这个过程对集合中存活的对象进行标记,未标记的对象进行GC回收。(缺点:可能出现错报漏报<STW可以确保可达性分析法的准确性,避免漏报>)

垃圾回收器

  • CMS:以获取最短回收时间停顿的并发收集器。收集范围是老年代,可以配合新生代的Serial和ParNew收集器一起使用。
  • G1:是一款面向服务端应用的收集器,它能充分利用多 CPU、多核环境。因此它是一款并行与并发收集器,并且它能建立可预测的停顿时间模型,即可以设置 STW 的时间。收集范围是老年代和新生代。不需要结合其他收集器使用。

垃圾回收算法

  • 标记-清除算法(会产生大量碎片)
  • 标记-复制算法(解决了碎片问题,但堆空间浪费了一半)
  • 标记-整理算法(标记存活的对象,并向堆的一端移动,清除另一端的对象)

GC类型

Minor GC:又称为新生代GC :指的是发生在新生代的垃圾收集。因为Java对象大多都具备朝生夕灭的特 性,因此Minor GC(采用复制算法)非常频繁,一般回收速度也比较快。
Full GC: 又称为 老年代GC或者Major GC : 指发生在老年代的垃圾收集。出现了Major GC,经常会伴随 至少一次的Minor GC(并非绝对,在Parallel Scavenge收集器中就有直接进行Full GC的策略选择过程)。 Major GC的速度一般会比Minor GC慢10倍以上。老年代:标记-整理算法(清理的时候做内存移动)

《温故知新》JVM虚拟机知识点聚合相关推荐

  1. JVM虚拟机知识点(保姆级教程)

    jvm虚拟机知识点 温馨提示:本章节阅读预计耗时>30分钟,请沏茶细品.如果描述不准确或者缺漏的地方,还请技术大大们指点迷津! 目录索引 文章目录 jvm虚拟机知识点 @[toc] JVM基础 ...

  2. JVM虚拟机知识点浅析总结

    文章目录 0. 方法指令 1. 类加载器 1.1 类加载过程 1.1.1. 加载 1.1.2. 链接 1.1.3. 初始化 1.2 类加载时机 1.3 类加载器 1.4 双亲委派机制 1.5 自定义类 ...

  3. java visualvm远程监控_深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战

    本文转自互联网,侵删 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutori ...

  4. 虚拟机的分类_「面试必备」Java虚拟机知识点复习手册(下)

    关注我的微信公众号:后端技术漫谈 不定期推送关于后端开发.爬虫.算法题.数据结构方面的原创技术文章,以及生活中的逸闻趣事. 我目前是一名后端开发工程师.主要关注后端开发,数据安全,网络爬虫,物联网,边 ...

  5. jvm虚拟机_JVM虚拟机五连问,能过并不是只靠运气

    对于Java程序员来说,在众多Java知识点当中JVM是很重要的一块,每个Java程序都离不开Java虚拟机,Java程序的运行依靠具体的Java虚拟机实例. 在Java虚拟机规范中,分别用子系统.内 ...

  6. java虚拟机内存监控_深入理解JVM虚拟机9:JVM监控工具与诊断实践

    本文转自: https://juejin.im/post/59e6c1f26fb9a0451c397a8c 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到 ...

  7. 【java】深入理解Java JVM虚拟机中init和clinit的区别

    1.概述 转载并且补充:深入理解Java JVM虚拟机中init和clinit的区别 原创 之所以来转载一下,是因为,有个学弟问了这个问题 这个知识点,回顾起来应该是我看 深入理解Java JVM虚拟 ...

  8. 为什么jvm要分为堆、方法区等?原理是什么?_「JVM」知识点详解一:JVM运行原理详解...

    前言 JVM 一直都是面试的必考点,大家都知道,但是要把它搞清楚又好像不是特别容易.JVM 的知识点太散,不系统,今天带大家详细的了解一下jvm的运行原理. 正文 1 什么是JVM? JVM是Java ...

  9. Java虚拟机知识点快速复习手册(上)

    前言 本文快速回顾了常考的的知识点,用作面试复习,事半功倍. 上篇主要内容为:虚拟机数据区域,垃圾回收 下篇主要内容为:类加载机制 面试知识点复习手册 全复习手册文章导航 Csdn全复习手册文章导航: ...

最新文章

  1. 北京大学 李胜 计算机,计算机科学技术系汪国平-李胜团队在虚拟现实领域取得系列进展...
  2. Ultimate SLAM:结合事件、图像和惯性测量单元,在HDR和高速场景下实现鲁棒的视觉SLAM...
  3. Class.getResourceAsStream和ClassLoader.getResourceAsStream方法
  4. dreamweaver中的JSP的编程环境配置
  5. Linux Swap空间利用率过高
  6. mysql 分页算法_MySQL高效的分页算法
  7. 电池图标不见了怎么解决
  8. 20年研发管理经验谈(七)
  9. developerDiskImage文件提取
  10. git pull拉取远程指定分支
  11. 手机显示无法接通服务器怎么办,手机无法接通是什么原因及如何解决【图文】...
  12. python 3d绘图模块_使用python和mayavi创建3D streamplot
  13. 偏差、方差、标准差、协方差
  14. 投递简历用什么邮箱最好用?
  15. ESP8266 接入阿里物联网平台实现远程控制LED
  16. jvm 内存查看与分析工具
  17. 水星mw325r设置无线服务器未响应,水星路由器325r设置WiFi隐藏信号方法
  18. Object Detection with Discriminatively Trained Part-Based Models
  19. win10在此计算机上找不到系统映像,大神分析win10系统使用DISM修复找不到源的具体步骤...
  20. WOFOST模型Matlab,一种WOFOST-PAR耦合模型建立方法与流程

热门文章

  1. 骁龙芯片性能排行2020_手机芯片性能榜:联发科翻身,麒麟990不及骁龙855,第一来自高通...
  2. 计算机语音输入和存储,语音输入输出装置
  3. 关于软件测试的一些思考
  4. 微信小程序开发篇-canvas保存图片大小问题
  5. Linux操作系统错误代码中英对照解释
  6. 际软力载Sika CarboDur v4.2耐火
  7. PE值、PB值、ROE和DCF值分别代表什么意思
  8. Microsoft 365 E5自动订阅
  9. php中时间戳转换为毫秒以及格式化时间
  10. dq轴坐标系下的电路方程