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


    前言

    说到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虚拟机》整理好了

  • 相关阅读:
    【golang】Go中的切片slice和操作笔记,垃圾回收机制,重组 reslice ,复制和追加,内存结构
    springboot嵌入式数据库H2初探
    CompletableFuture 异步编排
    Ranorex Studio 10.x Crack
    论文解读(g-U-Nets)《Graph U-Nets》
    Log4j 2.17.0 再曝漏洞,但不要惊慌
    编程基础 —— 链表
    vue-i18n及ElementUI国际化配置步骤
    聚观早报 |  iPhone 14 系列正式发布;腾讯增持育碧股票至9.99%
    记一次 .NET 某企业采购平台 崩溃分析
  • 原文地址:https://blog.csdn.net/LBWNB_Java/article/details/127700477