zoukankan      html  css  js  c++  java
  • JVM:一些基础知识准备

    类加载机制

    • Load:装载类信息
      • ClassLoader:类加载器
      • 双亲委派:加载器对一个类加载器会先让父类加载器加载,假如父类加载器找不到该类,才让子类加载器加载
    • Linking:连接
      • verify(验证):保证被加载类的正确性
      • prepare(准备):为类的静态变量分配内存空间,变将其的值初始化默认值(0,0.0,null)
      • resolve(解析):将类中的符号引用转换成直接引用
        • 符号引用:classformat中的符号表示
        • 直接引用:地址
    • Initialization:初始化
      • 为静态变量赋真正的值
    • 使用
    • 卸载

    运行时数据区

    方法区

    方法区只有一个,生命周期与JVM相同。方法区内包含了运行时常量池(.class文件中的常量池,String常量池在堆中,不要混淆)
    方法区线程共享,存储类的结构信息、常量、静态变量等。
    方法区基本上不发生垃圾回收,容量不足时会抛出OOM。
    1.7用永久代实现方法区,1.8用元空间(放在本地内存中)实现方法区。

    堆只有一个,生命周期与JVM相同。
    堆线程共享,堆存储对象或者数组数据。
    堆容量不足时会抛出OOM。

    java虚拟机栈

    虚拟机栈每个线程有一个,栈中存储栈帧,栈帧记录的是方法执行信息。
    栈的深度不够用了会抛出StackOverFlowException,默认大小1M。

    • 栈帧
      • 局部变量表:方法中所有局部变量的列表
      • 操作数栈:对数值操作的一个栈结构
      • 动态连接:栈帧中保存了一个指向 运行时常量池中该栈帧所属方法的引用,方法在运行时将符号引用转换成直接引用(有一些符号引用在编译类文件时无法确定其真正的引用)
      • 返回地址:方法被调用时的位置,有正常的地址和异常的地址
    本地方法栈

    和虚拟机栈类似

    程序计数器

    记录当前方法执行的行号,程序发生上下文切换时需要通过该行号返回到方法上次执行的位置。

    Java对象布局

  • 相关阅读:
    找回密码
    找回密码,注册
    登陆
    返回与Table结构相同的DataTable副本
    同步表
    同步按照NewTable中ID存储情况将数据按照规则同步至OldTable,并清空OldTable中多余数据行,返回错误消息
    Page.IsPostBack
    GridView中点击某行的任意位置就选中该行
    c#后台计算2个日期之间的天数差
    分页存储过程,连接查询
  • 原文地址:https://www.cnblogs.com/fcb-it/p/13341252.html
Copyright © 2011-2022 走看看