一、JVM和Java体系结构

JVM(上篇——①) 一、JVM和Java体系结构 1、前言 1.1、你是否也遇到过这些问题?
运行着的线上系统突然卡死,系统无法访问,甚至直接OOM(Out of )!想解决线上MGC问题,但却无从下手
新项目上线,对各种JVM参数设置一脸茫然,直接默认吧,然后就JJ了
每次面试之前都要重新背一遍VM的一些原理概念性的东西,然而面试官
却经常问你在实际项目中如何调优VM参数,如何解决GC、OOM等问题,
一脸懵逼 。
大部分Java开发人员,除会在项目中使用到与Java平台相关的各种高精尖技术,对于Java技术的核心Java虚拟机了解甚少 。
1.2、开发人员如何看待上层框架
一些有一定工作经验的开发人员,打心眼儿里觉得SSM、微服务等上层技术才是重点,基础技术并不重要,这其实是一种本末倒置的“病态” 。
如果我们把核心类库的API比做数学公式的话,那么Java虚拟机的知识就好比公式的推导过程 。
计算机系统体系对我们来说越来越远,在不了解底层实现方式的前提下,通过高级语言很容易编写程序代码 。但事实上计算机并不认识高级语言
1.3、架构师每天都在思考什么? 应该如何让我的系统更快?如何避免系统出现瓶颈?
知乎上有条帖子:应该如何看招聘信息,直通年薪50万+?
1.4、我们为什么要学习JVM?
面试的需要(BATJ、TMD、PKQ等面试都爱问)
中高级程序员必备技能
项目管理、调优的需要
追求极客的精神
比如:垃圾回收算法、JIT、底层原理
1.5、Java VS C++
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img--02)()]
垃圾收集机制为我们打理了很多繁琐的工作,大大提高了开发的效率,但是,垃圾收集也不是万能的,懂得JVM内部的内存结构、工作机制,是设计高扩展性应用和诊断运行时问题的基础,也是Java工程师进阶的必备能力 。
2、面向人群及参考书名
面对人群
拥有一定开经验的Java平台开发人员
软件设计师、架构师
系统调优人员
有一定的Java编程基础并希望进一步理解Java的程序员
虚拟机爱好者,JVM实践者
参考书目
Java SE()
3、Java及JVM简介 3.1、TIOBE语言热度排行榜
Java是目前应用最为广泛的软件开发平台之一 。随着Java以及ava社区的不断壮大,
Java也早已不再是简简单单的一门计算机语言了,它更是一个平台、一种文化、一
个社区 。
作为一个平台,Java虚拟机扮演着举足轻重的作用 。
作为一种文化,Java几乎成为了“开源”的代名词 。
作为一个社区,Java拥有全世界最多的技术拥护者和开源社区支持,有数不清的论坛和资料 。从桌面应用软件、嵌入式开发到企业级应用、后台服务器、中间件,可以看到Java的身影 。其应用形式之复杂、参与人数之众多也令人咋舌 。
3.2、java:跨平台的语言
3.3、Java虚拟机规范
Java虚拟机是Java平台的基石 。它是负责硬件和操作系统的技术组件独立性,其编译代码的小尺寸,以及它有保护用户远离恶意程序的能力 。
Java虚拟机是一种抽象的计算机器 。就像一个真正的计算机机器,它有一个指令集,并在运行时操作不同的内存区域 。使用虚拟实现编程语言是相当普遍的 。最著名的虚拟机可能是UCSD的P-Code机帕斯卡 。
3.4、JVM:跨语言的平台
JVM(Java虚拟机)是Java程序的运行环境,它是一个虚拟的计算机,可以在不同的平台上运行Java程序 。JVM负责将Java程序编译后的字节码解释执行,并提供了内存管理、垃圾回收、安全性等功能 。JVM的核心是Java解释器,它可以将字节码转换为机器码并执行 。JVM还包括了Java类库、Java运行时环境和Java开发工具等 。