手写商用Java虚拟机HotSpot,疯狂磨砺技术中

2023-10-18 12:20

本文主要是介绍手写商用Java虚拟机HotSpot,疯狂磨砺技术中,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在当前Java行业激烈竞争的形式下,唯有掌握技术,心中才不能慌。在多年前,我就开始苦练底层技术,但是眼看百遍也不如手过一遍,所以我打算把虚拟机的精华实现部分用手敲出来,这个过程注定不会轻松,但是心态不能着急,要一步一步来,一年二年三年后终能达成。

这个过程还会录制一些免费视频,简单介绍一下这个视频适合的目标人群,达到的目的等。

1、目标人群

对虚拟机底层实现有浓厚兴趣的人

想提升Java技术,精通Java语言的人

想切入虚拟机和编译器领域研发的人

想通过大型复杂的项目提升C++水平的人

不过HotSpot VM项目太过复杂,对C++、Linux系统编程、汇编指令、机器指令、编译原理等各方面都有较高的要求,如果这些方面的基础比较弱的话,还需要多加强。

2、达到的目的

精通Java的底层实现

对虚拟机的性能调优和故障排查得心应手

能够对虚拟机整体的实现有一个清晰的认识,达到动手开发虚拟机的能力

对后续研究更为复杂的C2编译器和G1等垃圾收集器有非常大的帮助

熟练使用C++

熟练掌握汇编语言

当研究lua、python等虚拟机时会感到更简单,研究v8等时感觉代码许多都很熟悉,很类似

另外,开课也会让许多人坚持下来,毕竟有人引路,也能节省非常多的时间和精力

3、编译调试环境

Linux(Ubuntu 16.04)

CPU架构为X86,位数为64

版本仅支持JDK1.8(也就是向前兼容的代码全部省略)

Linux内核版本 4.4.0-210-generic

GNU 5.4.0版本的编译器

编辑器:Visual Studio Code1 .51.0

使用语言:主体为C++语言,少量汇编有C语言

4、功能说明

商用HotSpot VM手写内容时,由于整个工程的代码在50万行左右,其中95%以上都是C++。我们只实现其实的精华部分即可,所以许多功能都不会实现。

不实现的功能如下:

(1)只实现C1编译器,不实现C2编译器

(2)没有指针压缩版实现

(3)堆不支持大页

(4)字节码解释器不再手写实现(PC上的效率太低,不适合生产用,但是会详细介绍)

(5)只包含Serial/Serial Old收集器,后期会实现G1,不实现Parallel和CMS等收集器

(6)不对类加载过程中的类进行合法性验证,也就是没有验证阶段

(7)不实现偏向锁和轻量级锁,直接使用重量级锁,会详细介绍偏向锁和轻量级锁

(8)线程采用NPTL 2.23版本,不兼容LinuxThreads

(9)不对一些统计做实现,如写PerfData, NMT等功能,记录GC日志等

(10)不实现SharedCDS

(11)省略SecurityManager和Protected Domain,类型安全检查约束

(12)不实现调试信息记录

(13)FlatProfiler不实现

(14)不实现一些实验性质的逻辑

(15)可省略的一些验证逻辑,如验证AdapterBlob的正确性,加上-XX:-VerifyAdapterCalls命令省略

(16)不对一些支持Java层Deprecated方法的功能进行实现,如线程的suspend和resume

(17)对默认选项为false的逻辑不实现,如UseNUMA等

(18)JNI和JVMTI选择性实现

(19)不实现vmStructs,不支持 SA(Serviceability Agent)

(20)不实现JMX、Attach及内部一些命令,如dumpheap、threaddump、jcmd及load等

当然,后续还有非常多需要补充和完善的地方,请持续关注…

5、实现路径:

大模块的实现路径如下:

内部锁

线程

二分模型

类的加载和解析

堆的简单规划

元数据区

CodeCache

模板解释器解释执行

Serial和Serial Old垃圾收集器

C1编译器

由于各个模块都是耦合紧密,相互交错,所以具体编写时会是一个循序渐进,逐步完善的过程。不会是一个模块写完再另外一个模块,需要以基本面完善点这样一个过程。

6、后续计划

在B站上免费更新一部分视频,后续有收费开课的打算。免费课程大纲如下:

在这里插入图片描述

手写Java虚拟机HotSpot终于要录制一系列视频啦!

有对虚拟机、Java性能故障诊断与调优等感兴趣的人可以入群讨论。
在这里插入图片描述
在这里插入图片描述

这篇关于手写商用Java虚拟机HotSpot,疯狂磨砺技术中的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/232555

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业