概述

JVM 的内存模型和 JVM 的垃圾回收机制一直是 Java 业内从业者绕不开的话题(实际调优、面试)JVM是java中很重要的一块知识,也是面试常问的问题之一,直至今天,仍然还有许多面试者在被问到Java虚拟机相关问题时,还是一脸懵逼,面试完之后直接被虐哭。今天特分享阿里架构师整理的Java虚拟机底层原理,请签收!

清单

由于文章篇幅限制,为了避免影响阅读体验,以下内容已截图展示,需要完整超清版本的可以在文末获取!!!

JVM 内存结构

Java 虚拟机的内存空间分为 5 个部分:

  • 程序计数器
  • Java 虚拟机栈
  • 本地方法栈
  • 方法区

HotSpot 虚拟机对象探秘

在 HotSpot 虚拟机中,对象的内存布局分为以下 3 块区域:

  • 对象头(Header)
  • 实例数据(Instance Data)
  • 对齐填充(Padding)

垃圾收集策略与算法

程序计数器、虚拟机栈、本地方法栈随线程而生,也随线程而灭;栈帧随着方法的开始而入栈,随着方法的结束而出栈。这几个区域的内存分配和回收都具有确定性,在这几个区域内不需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟随着回收了。

而对于 Java 堆和方法区,我们只有在程序运行期间才能知道会创建哪些对象,这部分内存的分配和回收都是动态的,垃圾收集器所关注的正是这部分内存。

HotSpot 垃圾收集器

HotSpot 虚拟机提供了多种垃圾收集器,每种收集器都有各自的特点,虽然我们要对各个收集器进行比较,但并非为了挑选出一个最好的收集器。我们选择的只是对具体应用最合适的收集器。

内存分配与回收策略

对象的内存分配,就是在堆上分配(也可能经过 JIT 编译后被拆散为标量类型并间接在栈上分配),对象主要分配在新生代的 Eden 区上,少数情况下可能直接分配在老年代,分配规则不固定,取决于当前使用的垃圾收集器组合以及相关的参数配置。

JVM 性能调优

在高性能硬件上部署程序,目前主要有两种方式:

  • 通过 64 位 JDK 来使用大内存;
  • 使用若干个 32 位虚拟机建立逻辑集群来利用硬件资源。

类文件结构

类加载的时机

类从被加载到虚拟机内存开始,到卸载出内存为止,它的整个生命周期包括以下

7 个阶段:

  • 加载
  • 验证
  • 准备
  • 解析
  • 初始化
  • 使用
  • 卸载

验证、准备、解析 3 个阶段统称为连接。

类加载的过程

类加载过程包括 5 个阶段:加载、验证、准备、解析和初始化。

类加载器

如果需要获取上述Java 虚拟机底层原理知识笔记,只需要转发+关注,私信关键词【笔记】即可免费获取!!!

java底层原理书籍_不愧是阿里p8大佬!终于把Java 虚拟机底层原理讲清楚了,请签收...相关推荐

  1. 不愧是阿里P8!深入理解Java虚拟机pdf百度云

    第一个:Alibaba[搜索推荐] 一面:算法题:长度为n的数组里放了n+1个大小在[1,n]的数,必然至少有一个重复的数,找出来 二面:概率题:求一根绳子被切两刀能组成一个三角形的概率. 三面主管面 ...

  2. 几天后自动领取java怎么做的_学了14天,终于把Java项目一做完啦

    原标题:学了14天,终于把Java项目一做完啦 今天是刘小爱自学Java的第113天. 感谢你的观看,谢谢你. 话不多说,开始今天的学习: 今天过后项目一也就算是结束了. 明天开始学SSM框架,再用S ...

  3. 阿里P8大佬带你深入解析JVM与java

    阿里P8大佬带你深入解析JVM与java 什么是Java 经过了多年的发展,Java早已由一门单纯的计算机编程语言,演变为了一套强大的技术体系.是的,什么是Java,我想技术体系四个字应该是最好的概括 ...

  4. java机试 数据结构_来看看阿里面试的一面都面了些什么笔试+机试(java岗)

    絮叨 说实话,能有机会面一下阿里对我来说帮助确实有蛮多,至少让我知道了自己的不足在哪,都说面试造火箭,上班拧螺丝.但就算是如此,为了生存,你也只有不停的学习,唯有光头,才能更强.哈哈 起因 2月28日 ...

  5. java书籍_这本最适合夯实基础的Java 书籍,80% 的 Java 程序员没认真看过

    今天要给大家带来的一本书,是大名鼎鼎的head first系列丛书的一本<head first Java>相信很多学习Java的朋友对它都不会陌生. 深入浅出系列书籍是由O'Reilly出 ...

  6. 阿里P8大佬亲自讲解!朝阳java培训

    开头 Spring框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶.Spring更是避免了重复造轮子的工作并跟随着互联网行业的发展做出不断的更新,很多研发人员把spring看作 ...

  7. 阿里P8亲自讲解!java声明类的语法格式

    前言 前两天,我收到了蚂蚁金服的offer,从朋友的内推开始面试到拿到最后offer经历了4面技术.一面交叉面和一面HR面.经过了漫长的等待和几次几乎折磨的面试之后,终于拿到了offer. 分享第一份 ...

  8. 阿里P8亲自讲解!java中级开发工程师需要掌握的技能

    前言 关于技术人如何成长的问题,一直以来都备受关注,因为程序员职业发展很快,即使是相同起点的人,经过几年的工作或学习,会迅速拉开极大的差距,所以技术人保持学习,提升自己,才能够扛得住不断上赶的后浪,也 ...

  9. 阿里P8架构师谈:Zookeeper的原理和架构设计,以及应用场景

    什么是 Zookeeper Zookeeper 分布式服务框架是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如: 统一命名服务 状态同步服务 集群 ...

最新文章

  1. 数据绑定以及Container.DataItem绑定技巧
  2. 手把手教你C语言静态库的开发
  3. mysql忘记设置用户_MySQL数据库为用户设置密码,Mysql修改密码。Mysql忘记密码解决方法...
  4. Simulink之三相桥式全控整流电路
  5. 聊天IM的时间戳显示规则
  6. 在Linux上如何查看Python3自带的帮助文档?
  7. SQLite的查询优化
  8. JavaSE(二):Java语法(5)——Java数据类型转换
  9. c语言判断二次函数,知识:六法搞定二次函数解析式的确定
  10. 《烈烈先秦》7、大秦的克星——侠将公子信陵君
  11. 手把手教你升级苹果ID为免费开发者帐号
  12. 【面试】阿里巴巴Java经典面试题整理及答案详解
  13. win7服务器建网站教程,win7搭建Web服务器教程
  14. 仿百度文库,office转pdf核心转换功能
  15. Ruby编程语言简介
  16. 最GIS应用案例——告诉你什么是GIS!
  17. PPT插入图片为任意形状
  18. Recent Advances in Open Set Recognition A survey全文翻译精校
  19. 瑞萨单片机iap串口升级boot程序与app程序合并的工程构建-学习记录
  20. 百度云搜索引擎森林战士_002 找到你要的资料——百度网盘使用指南

热门文章

  1. 从0开始利用宝塔linux面板+WordPress一键部署搭建个人的博客介绍
  2. php完全手册下载_PHP: 序言 - Manual
  3. Python中修改字符串的四种方法
  4. Python类的约束以及super()剖析
  5. 求不选修c语言课程的学生学号,数据库综合练习二.docx
  6. C语言字符串拼接函数:strcat()
  7. html <link>标签
  8. C++ 中 vector 的作用:
  9. python numpy中ndarray.reshape函数参数-1是什么意思?(模糊控制、自动推理)
  10. PyQt4编程之模态与非模态对话框(一)