1 初识JVM
1.1 什么是jvm
定义:
好处:
-
一次编写,到处运行。
-
自动内存管理,垃圾回收功能(大大减轻程序员负担)
-
数组下标越界检查(如果我们数组越界了,很有可能覆盖其他代码的内存,很严重的)
-
多态(jvm内部使用虚方法表来实现)
比较:
jvm jre jdk
jre = jvm + 基础类库(我们平时开发用的java.lang.* ,集合类,io类。。。)
JDK=jvm + 基础类库+编译工具(javac,javap,内存检测工具)
1.2 学习jvm有什么用
-
面试
-
理解底层的实现原理
-
中高级程序员的必备技能
1.3 常见的jvm
jvm是一个规范。你只要遵循这个规范,你甚至可以自己去开发一个jvm的实现。
1.4 学习路线
jvm可以分为这么几大块
-
类加载器
-
内存结构
-
执行引擎
我们的java源代码编译为java二进制字节码之后,他必须经过类加载器才能被加载到jvm内存里去运行。类都是放在方法区的部分,类将来创建的实例对象是放在堆的部分。而堆里面的这些对象在调用方法时又会用到虚拟机栈和程序计数器以及本地方法栈。方法执行时,每行代码是由执行引擎中的解释器逐行进行。方法里的一些热点代码,也就是被频繁调用的代码,会由即时编译器来编译,你可以理解为一个优化后的执行,执行引擎中还有一个很重要的模块GC模块。garbage collector ,会对堆里面一些不再被引用的对象进行回收。当然这里还有我们java代码不能实现的功能,必须调用底层实现的,和操作系统的一些功能打交道,就需要本地方法接口
第一部分我们学习内存,第二学习GC,第三学习类的字节码结构和编译前的优化,然后学习类加载器。
posted on 2021-09-24 21:35 Love&Share 阅读(24) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~