zoukankan      html  css  js  c++  java
  • java虚拟机(jvm)

    1、线程共享内存区:包括堆区、方法区、运行时常量池(三个都有可能跑出内存溢出错误)

        堆区                     一般用于存储对象实例的内存区,{堆区又分为新生代【Eden,from Survivor,to Survivor】和老年代(oldgen)}

        方法区                 逻辑上独立,物理上属于堆区(方法区中包含java类的结构信息如运行时常量池、字段、方法数据。。。以及类 、实例、接口的初始化时需要用到的特殊方法数据等)

        运行时常量池      属于方法区的一部分(注:当类装载器成功将一个类或者接口装入jvm是便会创建对应的运行时常量池)

    2、线程私有内存区:pc寄存器、java栈、本地方法栈(三个都有可能跑出内存溢出错误)

        pc寄存器(pc计数器)      线程独有便于并行

     java栈                                用于存储栈帧(存储局部变量表、操作数栈、方法出口等信息) 

       本地方法栈                       用于支持本地方法(如c/c++编写的方法)

    3、垃圾回收

      1、根搜索算法(判断对象可达?可达(存活)则不回收)

      2、回收算法:标记清除算法、复制算法、标记压缩算法

              年轻代适合第二种

         老年代适合第一种和第三种

    4、类加载

      类的加载分为三个阶段:加载、链接(验证、准备、解析)、初始化

        加载:加载字节码

        验证:格式验证(读取的目标文件是否是合法有效的字节码文件)、语义验证(字节码是否符合java语法规范)、操作验证(对类型的方法执行验证)、符号引用验证(对常量池中的各种字符引用执行验证)

        准备:对放在方法区的类数据信息的类变量执行初始化(仅仅是为类中的所有静态变量分配内存空间并设置初始值实例对象不在此操作范围)

        解析:将字节码常量池中的符号引用全部转换为直接引用(类、接口、方法、字段的符号引用)

        初始化:执行static的初始化包括变量和函数  

  • 相关阅读:
    Do You See Me? Ethical Considerations of the Homeless
    ELDER HOMELESSNESS WHY IS THIS AN ISSUE?
    Endoflife support is lacking for homeless people
    html内联框架
    html字体
    html块 div span
    html列表
    html表格
    SQL Server管理员专用连接的使用   作为一名DBA,经常会处理一些比较棘手的服务无响应问题,鉴于事态的严重性,多数DBA可能直接用“重启”大法,以便尽快的恢复生产环境的正常运转,但是多数情况
    如何配置最大工作线程数 (SQL Server Management Studio)
  • 原文地址:https://www.cnblogs.com/51python/p/10662030.html
Copyright © 2011-2022 走看看