jvm

                            jdk:java开发工具包  
              jdk=jre+java的开发工具(javac  java  javadoc  jar等)
         jre:java运行环境 
       jre=jvm+lib类库
jvm:java虚拟机  实现跨平台
jdk>jre>jvm    

 

类的加载(字节码的加载):
    hello.java-编译 --通过后--Hello.class(字节码文件或者类文件)----通过类加载器(ClassLoader)将类文件加载到 内存中
ClassLoader:将字节码文件(类文件)加载到jvm内存中
    常见的类加载器:
            BootstrpClassLoader:主要加载系统的类文件   jdk/jre/lib/rt.jar
            ExeClassLoader:加载的时口占的类文件  ext文件夹下的jar包

            AppClassLoader:加载的是应用程序中的类文件
    自定义类加载器:
        类加载器(懒汉):先让父classlader来加载,加载不成,再让父classloader的父classloader加载当所有的父classloader都加载不成,本classloader加载
        双亲委托模式  |

    按需求加载(懒加载)
    import  java.util.*;
    .class   类文件记载的具体过程:
    加载途径:本地系统(classpath)网络 jar包 等。
    链接:验证加载的.class文件是否正确 ,然后解析、

    初始化:静态变量等赋初始值  分配静态空间  
    使用:class  method  field
    卸载
======================
JVM的内存区域:
    程序计数器:每个线程独有的,各有各的 互不影响
        记录字节码执行的行号。

    本地方法栈:主服务于 native方法的栈  类似于 虚拟栈,也会出现溢出的现象。
            内存溢出:Stack'OverFlowError和OutOfMemoryError
            内存泄漏:产生了垃圾对象  但是因为各种原因 出现不能回收的现象

    堆:heap
        各个线程共享的数据
        存放的对象的  数组对象等
        可能会产生  内存溢出的现象
        新生态:发生垃圾回收频繁  MinorGC(回收站),分为Eden区(出生区 )、SercicorFrom(上次幸存者,这次扫描者)、SercicorTo(保留幸存者)三个区
        老年代:经常用
        永久代:class和元数据

    虚拟机栈(Stack):
        主要用于存储 局部变量,操作数栈,每个线程都会有自己的虚拟机栈和线程同时创建
    方法区:
        在虚拟机启动时被创建,方法去是堆的逻辑组成部分,但是可以选择在该区域不实现垃圾收集
        存储了每一个类的结构信息
=======================================
    垃圾回收:
        什么是垃圾(垃圾对象):不再被使用的对象,
        判定是否为垃圾的策略:
            引用计数法:对象被引用一次(被使用一次)加一
                引用失效:            减一
                当计数为0时,判定为垃圾。
                特点:简单、容易实现
            根搜索算法(可达性分析):
                从方法的入口进去,找到一个root(根)对象,向下执行,那个方法与根有关联

        几种引用:
            强引用:刚刚创建,非常明确的引用
            软引用:有用,但不是必须,一般作为垃圾的第二梯队,内存不够时,就回收
            弱引用:new  StringBuffer(new String("aaa")):可有可无
            虚引用:幻引用  垃圾回收期尽快回收。
        垃圾回收的集体算法:
            标记清除法:先标记,再清除。缺点:容易形成碎片,存放大对象麻烦。优点:简单
            标记复制算法(copying):将内存分为两部分,将存活的对象,复制到另一部分区域。缺点:内存浪费大,优点:简单,高效,不会有碎片
            标记整理算法(mark-Compack):标记是一样的,将碎片集中处理。
            分代收集方法:Generational  Collection

        垃圾回收器(不同厂商出售):
            Serial/Serial Old
            ParNew
            Gl
            CMS
        垃圾回收的几种类型:
                MinGc
                MajorGc/Full  Gc
            串行:
                单个线程回收  用户线程全部暂停
            并行:多个垃圾回收线程,用户线程暂停
            
            并发:回收线程和用户线程  同时切换轮流执行

 

 

 

                          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值