• JVM系列(四):PC寄存器(程序计数器)

    作者: 陆金龙       发表时间: 2022-12-02 04:19
    关键词:
    PC寄存器(程序计数器):存储下一条指令的地址。 CPU在不停的切换线程,切换到某个线程时,需要知道当前线程接着从哪继续执行。 每个线程都有它自己的程序计数器。 PC寄存器是一块很小的内存空间,是运行速度最快的存储区域。 PC寄存器是程序控制流指的示器。分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。 字节码解释器通过改变这个计数器的值来选取下一条需要执行的字节码指令。  
  • 类(接口)之间的六种关系及UML图表示

    作者: 陆金龙       发表时间: 2022-12-01 02:24
    关键词:UML图,泛化,实现,依赖,关联,聚合,组合
    1.泛化(继承) 泛化:实线空心三角形箭头。 在Java中就是继承。 2.实现 实现:虚线空心三角形箭头。 实现接口。 3.依赖      依赖:虚线箭头。      是一种使用关系,即一个类的实现需要另一个类的协助。如方法参数需要传入另一个类的对象,就是依赖这个类。      比如打印机的工作依赖于电脑。      4.关联      关联...
  • JVM系列(三):运行时数据区概述

    作者: 陆金龙       发表时间: 2022-11-20 05:49
    关键词:
    JVM内存布局规定了Java程序运行过程中内存申请、分配、管理的策略,保证JVM的高效运行。 运行时数据区结构如下图: 方法区和堆是一个进程(一个运行中的虚拟机)只有一份,虚拟机栈、程序计数器和本地方法栈是每个线程一份。优化的重点是堆空间,少量的在方法区(方法区在jdk8换成元空间了,堆外内存) 运行时数据区内容的三大重点是:虚拟机栈、方法区、堆。堆和方法区是有垃圾回收的。  
  • JVM系列(二):JVM的类加载子系统

    作者: 陆金龙       发表时间: 2022-11-20 05:39
    关键词:类加载器,ClassLoader
    1.类加载过程   从大的方面包含三个阶段:加载、连接(验证、准备、解析)、初始化。    1.1 类的加载阶段 通过一个类的全限定名来获取定义此类的二进制字节流。可以从ZIP包中读取(JAR、WAR),从网络中读取(Applet),运行时计算生成(动态代理技术),有其他文件生成(由JSP文件生成Class类),从数据库中读取等等。 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。 在内存中生成一个代表这个类的 java.lang.Class 对象,作为方法区中这个...
  • JVM系列(一):JVM与Java体系结构

    作者: 陆金龙       发表时间: 2022-11-19 20:11
    关键词:
    本文基于尚硅谷-宋红康的《JVM从入门到精通》培训视频整理。 主要内容: Java与JVM简介 Java及JVM的发展历程 虚拟机与Java虚拟机 JVM整体结构 Java代码执行流程 JVM的架构模型 JVM的生命周期     典型的虚拟机架构,分为基于栈的指令集架构和基于寄存器的指令集架构两种方式。JVM是基于栈的架构模型。     JVM、Java、开发框架、应用程序的关系如下:      ...
  • JVM系列笔记目录

    作者: 陆金龙       发表时间: 2022-11-19 18:36
    关键词:
        JVM主要的几大部分内容包括:1.内存与垃圾回收  2.字节码与类加载  3.性能监控与调优。 1.JVM与Java体系结构 2.JVM的类加载子系统 3.JVM的运行时数据区及线程 4.程序计数器 5.虚拟机栈 6.本地方法栈与本地方法接口 7.堆 8.方法区 9.直接内存 10.执行引擎 11.垃圾回收原理 12.垃圾回收器
  • Java笔记5:多线程

    作者: 陆金龙       发表时间: 2022-09-23 22:41
    关键词:
    5 多线程   5.1 使用Runnable实例创建线程 // 通过实现Runnable接口来创建线程类 public class RunnableTask implements Runnable { private int i ; // run方法同样是线程执行体 public void run() { for ( ; i < 100 ; i++ ) { // 当线程类实现Runnable接口时, // 如果想获取当前线程,只能用Thread.currentThread()方法。 Sys...
  • Java笔记6:反射

    作者: 陆金龙       发表时间: 2022-09-23 22:17
    关键词:
    6.3.1 反射获取类的信息 @Repeatable(Annos.class) @interface Anno {} @Retention(value=RetentionPolicy.RUNTIME) @interface Annos { Anno[] value(); } // 使用4个注解修饰该类 @SuppressWarnings(value="unchecked") @Deprecated // 使用重复注解修饰该类 @Anno @Anno public class ClassTest { // 为该类定义一个私有的构造器 private...