Java程序员必备的一些流程图( 二 )

  • 每个方法被执行的时候都会创建一个"栈帧",用于存储局部变量表(包括参数)、操作数栈、动态链接、方法出口等信息 。每个方法被调用到执行完的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程 。
  • 局部变量表存放各种基本数据类型boolean、byte、char、short等
  • 本地方法栈
    与虚拟机栈基本类似,区别在于虚拟机栈为虚拟机执行的java方法服务,而本地方法栈则是为Native方法服务 。
    Java堆
    • GC堆是java虚拟机所管理的内存中最大的一块内存区域,也是被各个线程共享的内存区域,在JVM启动时创建 。
    • 其大小通过-Xms(最小值)和-Xmx(最大值)参数设置,-Xms为JVM启动时申请的最小内存,-Xmx为JVM可申请的最大内存 。
    • 由于现在收集器都是采用分代收集算法,堆被划分为新生代和老年代 。新生代由S0和S1构成,可通过-Xmn参数来指定新生代的大小 。
    • 所有对象实例以及数组都在堆上分配 。
    • Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池,用于存放编译器生成的各种符号引用,这部分内容将在类加载后放到方法区的运行时常量池中 。
    方法区
    • 也称”永久代” ,它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域 。可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小 。
    • 运行时常量池:是方法区的一部分,其中的主要内容来自于JVM对Class的加载 。
    • Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池,用于存放编译器生成的各种符号引用,这部分内容将在类加载后放到方法区的运行时常量池中 。
    5.Java内存模型
    Java程序员必备的一些流程图

    文章插图
     
    • Java的多线程之间是通过共享内存进行通信的,在通信过程中会存在一系列如可见性、原子性、顺序性等问题,而JMM就是围绕着多线程通信以及与其相关的一系列特性而建立的模型 。JMM定义了一些语法集,这些语法集映射到Java语言中就是volatile、synchronized等关键字 。
    • Java内存模型规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存,线程的工作内存中保存了该线程中是用到的变量的主内存副本拷贝,线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存 。不同的线程之间也无法直接访问对方工作内存中的变量,线程间变量的传递均需要自己的工作内存和主存之间进行数据同步进行 。
    6.springMVC执行流程图
    Java程序员必备的一些流程图

    文章插图
     
    • User向服务器发送request,前端控制Servelt DispatcherServlet捕获;
    • DispatcherServlet对请求URL进行解析,调用HandlerMApping获得该Handler配置的所有相关的对象,最后以HandlerExecutionChain对象的形式返回.
    • DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter.
    • 提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)
    • Handler执行完成后,返回一个ModelAndView对象到DispatcherServlet
    • 根据返回的ModelAndView,选择一个适合的ViewResolver
    • ViewResolver 结合Model和View,来渲染视图
    • 将渲染结果返回给客户端 。
    7.JDBC执行流程
    Java程序员必备的一些流程图

    文章插图
     
    JDBC执行流程:
    • 连接数据源
    • 为数据库传递查询和更新指令
    • 处理数据库响应并返回的结果
    8.spring cloud组件架构
    Spring Cloud是一个基于Spring Boot实现的云原生应用开发工具,它为基于JVM的云原生应用开发中涉及的配置管理、服务发现、熔断器、智能路由、微代理、控制总线、分布式会话和集群状态管理等操作提供了一种简单的开发方式 。
    Java程序员必备的一些流程图

    文章插图