深入思考JAVA虚拟机,实现从0到1的突破

程序人生:从菜鸟到架构师的系统思考与成长路径 你是否遇到过这些困惑?工作3年还在写CRUD(增删改查),感觉技术没成长;想转型架构师却不知道从哪下手,学了一堆技术栈但不会用;带团队后发现“会写代码”和“能带人”完全是两回事……本文专为解决程序员职业发展中的“迷茫期”而写,覆盖从初级到架构师的全阶段成长逻辑,重点讲解“系统思考”如何贯穿每个阶段,帮助你跳出“碎片化努力”的陷阱。 阅读详情

前言

说到Java基础不得不说说JVM虚拟机,这是使得Java语言跨平台的原因。JVM虚拟机屏蔽了各种操作系统的差异。JVM虚拟机的构成包括程序计数器PC、方法调用栈、native方法调用栈、堆区、方法区(类、方法和常量池) 、直接内存等基本组成。堆空间和方法区是所有线程公享的。Jvm虚拟机的内容可以认为是进程的虚拟地址空间了。

Java代码被javac编译成类字节码。字节码也是挺有意思的,IDE可以直接将class文件反编译为Java源文件,虽然和源文件是有一点点出入,我们可以用Javap工具以可读的方式去读取字节码,-verbose就可以看到一条条的指令了(Prints stack size, number of locals and arguments for methods.后面聊到方法栈的时候,再回头来看这部分可能会更加深入。
另外注意一点:为了提高程序的执行性能,编译器和处理器都会对指令做重排序。所谓的重排序其实就是指执行的指令顺序。
这个编译也不是一般意义上的编译,一般的编译就是编译为机器码,机器码对应汇编语言。C语言和Cpp的编译可以说成是编译,那java执行的时候其实还是解释执行的。为什么要用解释执行这个词,Java是解释型语言,相当于JVM是解释器。
(这里说的是解释执行的过程,这些指令最终还是需要编译为机器码,普通的虚拟机应该就是解释执行)AOT 应该是就是说提前编译,那这个提前编译好的文件应该也还是class文件了,那AOT会藏在哪里了呢,是什么类型的文件了。JIT是提前编译部分热点的字节码。怎么判断热点代码,JVM也是采用了引用计数法和采样判断栈顶的代码,这里感觉和垃圾收集的想法是一致的。

Java 虚拟机是学习 Java 的基础,也是迈入高级 Java 开发工程师的必备知识点。所以今天这篇文章我们来聊聊如何从零开始学习 Java 虚拟机。

对于刚刚接触 JVM 的同学来说,JVM 就像一个黑盒一样,完全不知道这是一个什么东西。所以对于小白来说,最重要是搞清楚 JVM 到底是干嘛的,以及其常用的知识框架。针对这样的需求,推荐给大家《深入理解Java虚拟机》,这本书是国内学习 JVM 的必备书籍。通过阅读这本书,你对 JVM 的一些知识点会了解得更加全面。

JVM与性能优化知识点整理

一、JVM内存区域划分

1.程序计数器(线程私有)

2Java栈(线程私有)

3.本地方法栈(线程私有)

4.堆(线程共享)

5.方法区(线程共享)

6.直接内存(线程共享)

二、JVM执行子系

1.Class类文件结

1.1Java跨平台的基础.

1.2.Class类的本质

2.字节码指

2.1加载和存储指令

2.2运算或算术指令

2.3类型转换指令

2.4创建类实例的指令

2.5创建数组的指令

2.6访问字段指令

2.7数组存取相关指令

2.8检查类实例类型的指令

2.9操作数栈管理指

2.10控制转移指令

2.11方法调用指令

2.12方法返回指令

2.13异常处理指令

2.14同步指

3.类加载机制

4.类加载器

4.1系统的类加载器

4.2双亲委派模型

5.Tomcat类加载机制

6.方法调用详解.

6.1解析

6.2静态分派

6.3动态分派

6.4基于栈的字节码解释执行引擎

三、垃圾回收器和内存分配策略

1Java中是值传递还是引用传递?

2.引用类型

3.基本垃圾回收算法

3.1按照基本回收策略分

3.2按分区对待的方式分

3.3按系统线程分

4.分代处理垃圾.

5JAVA中垃圾回收GC的类型

四、编写高效优雅Java程序.

1.面向对象

1.1构造器参数太多怎么办?

1.2不需要实例化的类应该构造器私有.

1.3不要创建不必要的对象

1.4避免使用终结方法..

1.5使类和成员的可访问性最小化.

1.6使可变性最小化

1.7复合优先于继承.......

1.8接口优于抽象类

2.方法

2.1可变参数要谨慎使用.

2.2返回零长度的数组或集合,不要返回null.

2.3优先使用标准的异常.

3.通用程序设

五、性能优化

1.常用的性能评价/测试指标

1.1响应时间

1.2并发数

1.3吞吐量

1.4关系

2.常用的性能优化手段

2.1避免过早优化

2.2进行系统性能测试

2.3寻找系统瓶颈,分而治之,逐步优化.

2.4前端优化常用手段

3应用服务性能优化

3.1缓存

3.1.1缓存的基本原理和本质

3.1.2合理使用缓冲的准则

3.1.3分布式缓存与一致性哈希

3.2异步

3.2.1同步和异步,阻塞和非阻塞

3.2.2常见异步的手段

3.3集群

3.4应用相关

3.4.1代码级

3.4.2并发编程

3.4.3资源的复用

3.4.4 JVM

3.4.5 GC调优

3.4.6调优实战

3.4.7存储性能优化

由于文章篇幅过长,小编把JVM以及性能优化解析以及《深入浅出Java虚拟机》整理好了

手把手教你用TL431设计反激电源补偿器(附波特图调试技巧) 本文详细介绍了如何使用TL431设计反激电源补偿器,并提供了波特图调试技巧。通过实战经验分享,帮助工程师快速掌握补偿网络设计、分压电阻计算和稳定性判据,避免常见设计误区,提升电源稳定性与效率。 阅读详情

相关推荐

超详细Matlab R2021a免费安装教程(附安装包)

Matlab是一种高级技术计算语言和交互式环境,用于算法开发、数据可视化和数值计算。它集成了数学、工程和科学计算的丰富函数库,提供了强大的数据分析和绘图工具。Matlab还支持并行计算和大规模数据处理,适用于各种领域,如信号处理、图像处理、控制系统、机器学习等。

waicsdn_haha的博客 1万+

从零开始,自己动手写Java虚拟机

从零开始,自己动手写Java虚拟机 自己动手写一个Java虚拟机 java虚拟机的作用 java虚拟机的组成 java虚拟机的开发 java虚拟机的测试

karizhang的专栏 1万+

ZEMAX知识点:坐标间断面(coordinate break)

zemax知识点:坐标间断面

weixin_47638568的博客 1万+

从0到1:Java学习的通关秘籍

Java作为一门广泛应用的编程语言,其学习路径包括基础语法、环境搭建、面向对象编程、核心知识、高级特性与框架应用等。初学者应从开发环境搭建开始,安装JDK和IDE,编写简单的HelloWorld程序,逐步掌握数据类型、运算符、流程控制等基础语法。进阶阶段需学习面向对象编程,理解类与对象、封装、继承、多态等概念,并掌握集合框架、异常处理、文件I/O等核心知识。高级阶段则涉及多线程、并发编程、JVM内存模型、类加载机制、性能调优等内容,同时学习设计模式、数据库技术等。项目实践是巩固知识的关键,建议从小型项目入手

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1219

铁路场景雷达点云目标识别与追踪系统

本文介绍了一种基于毫米波雷达的铁路货运车站安全监控系统。该系统采用分布式架构,通过多个毫米波雷达节点采集点云数据,经过坐标转换、多雷达融合等处理后,利用机器学习算法实现列车、行人等目标的实时识别与追踪。系统包含数据采集层、处理层、目标识别层、追踪层、预警决策层和可视化层,能够克服传统视频监控受环境影响大的缺点,实现全天候可靠监测。文中详细展示了雷达数据解析和点云预处理的代码实现,包括坐标转换、数据格式解析和体素网格滤波等关键技术。该系统可有效预警铁路场景下的碰撞风险,提升货运车站的安全管理水平。

huanghm88的专栏 125

slew dreate,slew threshold与transition计算

​只看rise情况下,from pin取slew threshold10%-90%的区间,slew derate为1,计算得到transition为1.002e-10,to pin的slew threshold 为30%-70%,slew derate 0.5,从波形列表上取相近的值3.75e-10和8.75e-10,计算得到transition为(8.75e-10-3.75e-10)/0.5=1e-9,考虑精度和取值区间问题,基本符合工具计算的值,如下:​。如下示例,在.lib库中有定义以下内容。

m0_61544122的博客 793

Java从0到1的成长之路

[进阶指南](http://how2j.cn?p=61135)

MAGIC_LAN的博客 335

全新RT-DETR 有效涨点改进目录 | 包含各种卷积、主干改进、各种注意力机制、Neck特征融合改进、损失函数、AIFI创新改进、独家创新、小目标检测、特殊场景检测等最全大论文及小论文必备创新改进点

《全新最全RT-DETR涨点改进专栏》提供500+种创新改进方案,涵盖卷积、注意力机制、主干网络等模块优化,适用于PCB检测、工业缺陷检测等场景。专栏包含顶会论文改进点、数据集增强方法、热力图可视化等实用功能,帮助科研人员快速提升模型性能。提供完整环境配置指南(Python3.10+Pytorch2.5.1)和训练教程,支持不同版本RT-DETR模型。定期更新涨点策略,配套QQ答疑群免费指导,适合从入门到发论文全流程需求,特别推荐给目标检测领域的研究生和工程师。

Ai缝合怪、助力小伙伴高效发论文 3416

Java后端技术从0到1技术路线,一步步走向大神!

最近很多入群的小伙伴私聊我Java后端怎么学?学了之后能干什么?学了这个之后接着学什么?我曾和他们一样迷茫的走了一步步,现在抽时间给大家整理一份学习的技术路线,献给迷茫的小伙伴!本文分为两个阶段:初级阶段和高级阶段。对于很多在校生只需要掌握初级阶段然后好好复习基础知识,好好准备笔试和面试试题,基本上可以到差不多的工作了。如果学有余力可以看一下高级阶段,毕竟现在很多公司都是需要我们有造航母的能力,然

Java后端技术 6433

钢结构焊接连接工艺

钢结构焊接连接工艺

wwdoffice950426的博客 61

Flink Gauss CDC:深度剖析存量与增量同步的创新设计

开发Flink Gauss CDC是为了适配华为自研GaussDB的特殊日志格式和逻辑复制机制,解决Flink CDC无法直接支持的问题,同时优化存量与增量同步的效率和一体化读取能力,满足GaussDB复合主键处理、数据落库等定制化需求,以实现高效、准确的数据同步。

数据与算法架构提升之路专栏 1985

Java基础从0到1——001篇

Java-1 此篇是记录篇,学习java的小笔记,方便以后自己查阅,也可以方便其他小伙伴一起学习。 public class momo { public static void main(String[] args) { System.out.println("hhhhh"); } } //经典开始。。 psvm sout是方便打出,idea编辑工具的快捷。 计算机存储设备的最小信息单元是位(b),计算机中最小的存储单元是字节 B 1B=8b。 变量名不能重复,变

安丹易的博客 303

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

0 基础学Java (1) - 什么是JAVA,JAVA简介

什么是JAVA Java与C语言C++所不一样的是Java一门面向对象编程语言,结合收纳了C语言的优点,还摒弃了C里难以理解的指针、分配内存、多继承等概念,所以Java的功能强大简单易。Java极好的实现了面向对象,允许程序员更简单的思考,更便捷的思考编程,所以Java是静态面向对象编程语言的代表。 JAVA诞生 1972年C诞生,贴合硬件,运行极快,效率极高。操作系统,编译器,数据库,网络系统等,指针和内存管理。 1982年C++诞生,面对对象,兼容C,图形领域、游戏等。 1990年初任职于Sun公司(S

烧香猪^(* ̄(oo) ̄)^的博客 423

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java会不会已经饱和,会被淘汰吗?

如今,面对曾经在程序员中被各种新技术掩盖直至堙灭的技术值得怀念。犹如COBOL这当年被老程序员们尊为神器的语言如今也基本没有价值。而Java作为现代程序员的中坚力量在这点上或许会成为下一个COBOL。   有关JAVA的技术卖出多少本书已经是一个很久远的记忆了。现处中年时期的Java语言的用途已经不再出现在各种杂志的封面上了。JAVA从出生到现在已经19年了,应用开发圈已经开始绕着那些更有吸引力的新技术。Java或许是Web 1.0时代的一个传说。   从招聘信息你就可以知道,跟iOS相关的开发有250

deqing271的博客 289

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【YF技术周报 Vol.01】OpenAI 国会指控 DeepSeek,字节发布 Seedance 2.0,Java 26 预览版来了

《YF技术周报》首期聚焦AI领域重大动态:OpenAI指控中国公司DeepSeek通过API"非法蒸馏"其模型;字节跳动发布支持音画同步的视频生成模型Seedance 2.0;OpenAI全面转向GPT-5并下线旧版本;Azul报告显示Java在AI工程化中的渗透率攀升。分析指出,AI竞争已转向技术合规性、多模态数据处理和工程化落地能力,开发者需关注模型无关架构设计、存储成本优化及Java在高性能计算中的新机遇。

m0_58782205的博客 4769

蚂蚁万亿参数思考模型Ring-1发布即开源! 综合能力逼近 GPT-5

Ring-1T在接入多智能体框架AWorld后,使用纯自然语言推理解答IMO2025赛题,仅用一次解出第1、3、4、5题,达到IMO银牌水平,成为首个能拿国际奥数奖的开源系统。:预览版Ring-1T-preview在AIME 25测试中获92.6分,超越所有已知开源模型及Gemini 2.5 Pro,接近GPT-5(无工具使用)的94.6分。蚂蚁万亿参数思考模型Ring-1的发布与开源标志着开源大模型领域的重要突破,其综合能力已逼近GPT-5,尤其在数学推理、代码生成和通用任务上表现卓越。

民工哥的博客 405

java开发日常工作内容,帮你突破瓶颈

GC概述 垃圾收集(Garbage Collection)通常被称为“GC”,由虚拟机“自动化”完成垃圾回收工作。 思考一个问题,既然GC会自动回收,开发人员为什么要学习GC和内存分配呢?为了能够配置上面的参数配置?参数配置又是为了什么? “当需要排查各种内存溢出,内存泄露问题时,当垃圾成为系统达到更高并发量的瓶颈时,我们就需要对GC的自动回收实施必要的监控和调节。” JVM中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生随线程而灭。栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理。它们的

m0_56252652的博客 165

java会被淘汰吗_Java不会被淘汰的12个原因

如今,面对曾经在程序员中被各种新技术掩盖直至堙灭的技术值得怀念。犹如COBOL这当年被老程序员们尊为神器的语言如今也基本没有价值。而Java作为现代程序员的中坚力量在这点上或许会成为下一个COBOL。有关JAVA的技术卖出多少本书已经是一个很久远的记忆了。现处中年时期的Java语言的用途已经不再出现在各种杂志的封面上了。JAVA从出生到现在已经19年了,应用开发圈已经开始绕着那些更有吸引力的新技术...

weixin_28900073的博客 2652

java会被淘汰_Java不会被淘汰的12个缘由

现在,面对曾经在程序员中被各类新技术掩盖直至堙灭的技术值得怀念。犹如COBOL这当年被老程序员们尊为神器的语言现在也基本没有价值。而Java做为现代程序员的中坚力量在这点上或许会成为下一个COBOL。程序员有关JAVA的技术卖出多少本书已是一个好久远的记忆了。现处中年时期的Java语言的用途已经再也不出如今各类杂志的封面上了。JAVA从出生到如今已经19年了,应用开发圈已经开始绕着那些更有吸引力的...

weixin_42123237的博客 339

java的地位_Java地位无可动摇的12个原因

如今,面对曾经在程序员中被各种新技术掩盖直至堙灭的技术值得怀念。犹如COBOL这当年被老程序员们尊为神器的语言如今也基本没有价值。而Java作为现代程序员的中坚力量在这点上会不会成为下一个COBOL?有关JAVA的技术卖出多少本书已经是一个很久远的记忆了。现处中年时期的Java语言的用途已经不再出现在各种杂志的封面上了。JAVA从出生到现在已经26年了,应用开发圈已经开始绕着那些更有吸引力的新技术...

weixin_33149211的博客 196

我的世界一个程序导致JAVA,Java地位无可动摇的12个原因

如今,面对曾经在程序员中被各种新技术掩盖直至堙灭的技术值得怀念。犹如COBOL这当年被老程序员们尊为神器的语言如今也基本没有价值。而Java作为现代程序员的中坚力量在这点上或许会成为下一个COBOL。有关JAVA的技术卖出多少本书已经是一个很久远的记忆了。现处中年时期的Java语言的用途已经不再出现在各种杂志的封面上了。JAVA从出生到现在已经19年了,应用开发圈已经开始绕着那些更有吸引力的新技术...

weixin_39726131的博客 161

卷起来,突破35岁焦虑,动画演示CPU记录函数调用过程

通过这篇文章,能够了解到 方法如何调用 、 方法执行完之后如何返回、 内存如何记录方法调用过程。方法调用和返回过程涉及到了,虚拟机栈、程序计数器、局部变量表、操作数栈、方法返回地址、动态链接 等等内容...

公众号:ByteCode 805

Java地位无可动摇的12个原因

如今,面对曾经在程序员中被各种新技术掩盖直至堙灭的技术值得怀念。犹如COBOL这当年被老程序员们尊为神器的语言如今也基本没有价值。而Java作为现代程序员的中坚力量在这点上会不会成为下一个COBOL? 有关JAVA的技术卖出多少本书已经是一个很久远的记忆了。现处中年时期的Java语言的用途已经不再出现在各种杂志的封面上了。JAVA从出生到现在已经26年了,应用开发圈已经开始绕着那些更有吸引力的新技术。Java或许是Web 1.0时代的一个传说。 从招聘信息你就可以知道,跟iOS相关的开发有2500左右的..

Feng_clay的博客 232

超详细java中的ClassLoader详解

ClassLoader翻译过来就是类加载器,普通的java开发者其实用到的不多,但对于某些框架开发者来说却非常常见。 理解ClassLoader的加载机制,也有利于我们编写出更高效的代码。ClassLoader的具体作用就是将class文件加载到jvm虚拟机中去,程序就可以正确运行了。 但是,jvm启动的时候,并不会一次性加载所有的class文件,而是根据需要去动态加载。 想想也是的,一次性...

dw147258dw的专栏 6696

2025 年将成 Python 主导 AI 领域的最后一年:Java 强势入侵 Python 腹地

Ritter 写道,“众所周知,开发者圈子都认为 Java 语言更适合开发企业级 AI 应用程序,因为它的可扩展性和性能更好,只是目前 Python 凭借丰富的依赖库和其他支持性的 AI 开发基础设施暂时取得优势。Azul 的这份报告囊括了来自全球各地 2000 多名 Java 专业人士的回复,研究了企业如何应对 Oracle Java 的定价与许可挑战、组织在解决云成本方面采取的策略、影响 DevOps 生产力的因素,以及 Java 在 AI 开发领域发挥的作用。

IT界那些事儿 500

Java可移动性不强_java地位无可撼动的原因

如今,面对曾经在程序员中被各种新技术掩盖直至堙灭的技术值得怀念。犹如COBOL这当年被老程序员们尊为神器的语言如今也基本没有价值。而Java作为现代程序员的中坚力量在这点上会不会成为下一个COBOL?有关JAVA的技术卖出多少本书已经是一个很久远的记忆了。现处中年时期的Java语言的用途已经不再出现在各种杂志的封面上了。JAVA从出生到现在已经26年了,应用开发圈已经开始绕着那些更有吸引力的新技术...

weixin_29363791的博客 155
上一篇: 大规模分布式存储系统核心原理解析,读书有感
下一篇: 深入学习Redis,结合实际工作经验总结常用核心知识点
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值