提供常州网站优化,赣州市人才网招聘信息查询信息,网站的js效果,网站怎么做下拉刷新页面数据一、JVM概述
目录
一、JVM概述
1.jvm的作用
2.jvm的组成
2.1类加载
2.1.1加载
2.1.2链接
2.1.3初始化
2.1.4类加载器分类
2.1.5双亲委派机制
2.2运行时数据区
2.2.1程序计数器
2.2.2虚拟机栈
2.2.3本地方法栈
2.2.4java堆内存
2.2.5方法区
2.3本地方法库接口 …一、JVM概述
目录
一、JVM概述
1.jvm的作用
2.jvm的组成
2.1类加载
2.1.1加载
2.1.2链接
2.1.3初始化
2.1.4类加载器分类
2.1.5双亲委派机制
2.2运行时数据区
2.2.1程序计数器
2.2.2虚拟机栈
2.2.3本地方法栈
2.2.4java堆内存
2.2.5方法区
2.3本地方法库接口 2.4执行引擎
2.4.1解释器
2.4.2JIT编译器
2.4.3半解释半编译
2.5垃圾回收
2.5.1早期的垃圾回收
2.5.2java的垃圾回收
2.5.3垃圾回收的区域
2.5.4垃圾回收算法
2.5.5垃圾回收器 1.jvm的作用 将.class字节码文件装载编译解释为该平台对应的机器码。jvm不仅可以加载java的字节码文件还可以加载其他语言的字节码文件。
2.jvm的组成
jvm的整体组成分为以下四个部分 1.类加载器ClassLoder 2.运行时数据区(Runtime Data Area) 3.执行引擎(Excute Engine) 4.本地库接口(Native Interface)
2.1类加载 类加载系统从文件系统或网络中加载class文件而是否可以运行由执行引擎决定。
2.1.1加载 使用流将硬盘上的字节码读取到内存中运行时数据区的方法区中生成对象的class对象
2.1.2链接 验证验证字节码格式是否正确检查class字节码文件是否被篡改 准备为静态变量赋默认值如static int a 123;此时a被赋予int类型默认值0 解析将字节码中符号引用替换成直接引用,(符号引号就是字节码中的逻辑符号,直接引用就是内存地址)
2.1.3初始化 当类完成初始化即代表这个类加载完成。 初始化过程中主要有以下功能1.初始化类中静态变量2.执行静态代码块如果有父类则从父类开始递归初始化。初始化过程中是在执行底层构造方法client()该方法是由编译器生成的。
什么时候初始化即类什么时候被加载 1.使用类中的静态成员如调用类中的静态方法静态变量 2.运行类中的main方法 3.new该类的对象 4.加载该类的子类 5.通过反射机制 Class.forName()
有以下两种情况不会被初始化 1.使用类中的静态常量 2.使用该类创建一个数组对象
2.1.4类加载器分类
引导类加载器启动类加载器bootstrap classloder 这个类加载器用语言和C实现嵌套在jvm内部负责加载java核心库中的类。如java.lang、java.util、java.math、java.io、java.sql等包中的类。
扩展类加载器extension classloder 这个类加载器由java语言实现,用于加载java8\jre\lib\ext 目录下的类
应用程序类加载器application classloder 这个类加载器由java语言实现用于加载我们自定义的类。
2.1.5双亲委派机制 该机制是指在类加载过程中会先由上级的类加载器进行加载如果找不到该类则逐级由下面的类加载器加载如果找不到类则抛出ClassNotFoundException异常。该机制是必要的可以有效地防止用户自定义的类因为地址名重复而覆盖源代码的类。
2.2运行时数据区
作用运行时数据区是java程序运行时jvm存储数据和管理程序执行的内存区域。
虽然各虚拟机的运行时数据区略有不同但是都是满足java虚拟机的规范的java8虚拟机规定运行时数据区包括以下区域1.方法区2.堆3.程序计数器4.本地方法栈5.虚拟机栈
2.2.1程序计数器
作用 程序计数器是用来记录当前线程中执行的指令的位置
程序计数器特点 程序计数器是用来记录当前线程中执行的指令的位置因此每个线程都有一个程序计数器程序计数器是线程私有的 程序计数器占用内存小执行速度快 程序计数器随线程而生随线程而死 程序计数器不存在内存溢出的情况。
2.2.2虚拟机栈
作用虚拟机栈是java执行方法的区域
虚拟机栈的特点 虚拟机栈中程序可以执行java方法属于运行结构每个线程都会有一个虚拟机栈因此虚拟机栈也是线程私有的。 当栈中执行的方法过多时会出现栈溢出异常。 栈运行特点,先进后出/后进先出 方法被调用过后在栈中称为栈帧栈帧内部包括局部变量表表达式栈方法返回地址 局部变量表中存储方法中的参数和方法内部的局部变量基本数据类型直接存值引用类型则存储对象的引用。 表达式栈进行方法中的所有计算过程。 当一个方法执行完毕之后要返回之前调用它的地方因此在栈帧中必须保存一个方法返回地址。
2.2.3本地方法栈
作用本地方法栈主要用来运行被调用的本地方法用native修饰的方法由操作系统实现的c/c语言方法
2.2.4java堆内存
作用堆是用来存储运行时产生的所有对象。
堆的特点 堆是java内存管理的最大区域是jvm中内存最大的区域。堆的内存大小是可以调节的运行时数据区中除了程序计数器的大小不可以调整以外其他均可以通过jvm调优来调整大小。例如:-Xms:10m(堆起始大小)-Xmx:30m(堆最大内存大小)。 java产生的所有对象都在堆中存储 所有的线程共享堆内存 堆空间会发生内存溢出 堆中是垃圾回收的主要区域
堆的空间分区 堆分为新生区和老年区新生区又分为伊甸园区和幸存者区幸存者区又分为幸存者0区和幸存者1区。 对象在堆中的分配过程新产生的对象首先存放在伊甸园区在第一次GC后所有未被回收的对象会被转移到幸存者0区在第二次GC后伊甸园区和幸存者0区的所有对象会被转移到幸存者1区再次进行GC后伊甸园区和幸存者1区的所有对象都会转移到幸存者0区如此循环往复直到对象的GC次数超过15次就会被转移到老年区老年区的对象就相对稳定GC的频率会较低。或者当对象较大时也会被送到老年区。 堆空间分区的必要性对堆空间进行分区是必要的通过对对象在堆中进行分区来调整GC对对象的扫描频率从而提高GC的效率。 设置堆空间的参数 -Xms:初始堆空间内存 -Xmx:最大堆空间内存 -Xmn:设置新生代的大小 -XX:MaxTenuringTreshold:设置新生代垃圾的最大年龄
2.2.5方法区
作用方法区主要用来储存加载到内存中的类信息也会存储静态方法和变量及即时编译器编译的代码
方法区特点 方法区物理上和堆处于同一个空间但是逻辑上会对其进行区分我们又称方法区为元空间 方法区大小是可以设置的通过对:MetaspaceSizeN参数进行修改, 方法区一旦空间不足,会触发FULL GC(整堆收集),会影响应用程序线程,一般情况下,可以把方法区设置较大一点 方法区存在内存溢出 方法区存在垃圾回收
方法区中的类什么时候会被回收 想要对方法区中的类进行回收需要满足以下三个条件 1.方法区中该类及其所有子类的实例都不存在 2.加载该类的类加载器不存在了 3.该类的Class对象不存在了
2.3本地方法库接口
作用本地库接口是一个编程框架可以让java代码与其他语言编写的代码进行交互即让java程序调用本地方法c语言或c。
什么是本地方法本地方法就是用native关键字修饰的方法
为什么要调用本地方法本地方法可以与操作系统上的硬件进行交互而java属于应用程序语言没有权限操作硬件设备。
new Object().hashCode(); //public native int hashCode(); 获取内存地址
new FileInputStream().read(); //private native int read0() 读硬盘数据
new Thread().start();// private native void start0(); 把线程注册到操作系统 2.4执行引擎
作用执行引擎excution engine的作用是将字节码文件解释/编译为对应平台上的机器语言。其充当了高级语言和机器语言之间的翻译官。
2.4.1解释器 解释就是对字节码逐行解释成机器码的过程该过程响应速度快程序运行就可以投入使用但是逐行解释效率较低。
2.4.2JIT编译器 编译就是对字节码整体编译后执行编译需要花费一定时间但是效率高。JIT编译器会对热点代码进行编译后缓存以后使用时就不需要进行编译操作了。
2.4.3半解释半编译 java是半解释半编译语言这样设计既可以在程序运行之处利用解释的特点立即执行也能通过编译操作提升效率。
2.5垃圾回收
什么是垃圾垃圾就是程序运行过程中没有任何引用能访问到的对象。 清理垃圾如果不及时对垃圾进行清理就会导致堆内存溢出。因为垃圾会一直占据内存知到程序运行结束。
内存溢出内存溢出就是内存不够用了但是还有新的对象产生于是程序抛出异常。 内存泄漏内存泄漏是因为某些对象程序已经不再使用了但因为某些原因仍存在应用GC无法对其进行回收例如数据库连接对象网络Socket对象。
Stop The WorldSTW在GC过程中会将应用程序的线程停止发生短暂的卡顿。
finalize机制java中的Object类提供了一个finalize方法这个方法是在对象被判定为垃圾后在被回收之前自动被垃圾回收器调用的方法。该方法是针对对象的只能被调用一次。如果在第一次的finalize方法中将本标记为垃圾对象复活为其重新指向引用则第二次垃圾回收时就不会调用finalize方法了。
对象的分类 1.可触及没有被判定为垃圾对象 2.可复活被判定为垃圾对象但是还没调用过finalize方法。 3.不可触及第二次被判定为垃圾对象。
2.5.1早期的垃圾回收 早期的C和C都是手动申请内存手动释放内存。此种设定可以精确地管理内存使用时申请不需要时就释放。但是会给程序员带来较大的负担一旦忘记释放内存就会产生内存泄漏。
2.5.2java的垃圾回收 java采用的是自动垃圾回收解放了程序员不用再关心什么时候释放空间。
2.5.3垃圾回收的区域 堆是垃圾回收的重点区域对堆中的新生代会频繁进行GC操作较少对老年区GC。方法区因为类加载信息回收较为苛刻需要等到FULL GC整堆回收。
2.5.4垃圾回收算法
2.5.4.1垃圾标记阶段的算法
1.引用计数算法Reference Counting 对每个对象都有一个引用计数的属性当引用计数为0时表示该对象已不存在引用指向他便标记为垃圾。然而该方法有个致命缺点就是无法解决循环引用问题从而导致内存泄漏。 2.可达性分析算法 该方法从活跃对象开始向下寻找与活跃对象相连接的都是被使用的而未与活跃对象连接的就是垃圾对象。 活跃对象包括 1.虚拟机栈中方法使用的对象 2.引用类型静态变量
static Object globalVariable new Object(); // 静态变量是GC Root 3.所有被同步锁持有的对象 4.jvm内部的引用对象如常驻的异常对象类加载器等。
2.5.4.2正式回收阶段算法
1.标记复制算法 标记复制算法可以有多个内存空间会将区域中的有用对象集体复制到其他区域中然后将原本区域中的对象全部清除。通常适用于回收新生区。因为新生区中垃圾较多需要复制的对象较少。
2.标记清除算法 该算法只需要一块内存会将被标记为垃圾的对象直接清除但是回收后会导致内存碎片化适用于老年区老年区中垃圾较少。
3.标记压缩算法 该方法只需要用到一块内存会将被标记的对象删除后再对剩余对象进行移动防止产生碎片化区域。
分代收集
年轻代的对象,存活的少,垃圾多,使用标记复制算法进行回收 老年代的对象大,且存活时间长,采用标记清除和标记压缩算法进行回收 优化垃圾回收效率
2.5.5垃圾回收器
1.分类
垃圾回收器按线程数分为 单线程串行Serial 多线程并行Parallel 垃圾回收器。 从工作模式上分为: 独占式的: 当垃圾回收线程在执行时,其他用户线程暂停STW 并发式的: 垃圾回收线程和用户线程可以同时执行, 减少了用户线程暂停的次数和时间并未完全不存在STW。
按照工作内存分为: 新生代垃圾收集器 老年代垃圾收集器
jdk8支持的垃圾回收器: 文章转载自: http://www.morning.lxwjx.cn.gov.cn.lxwjx.cn http://www.morning.qykxj.cn.gov.cn.qykxj.cn http://www.morning.smkxm.cn.gov.cn.smkxm.cn http://www.morning.jbblf.cn.gov.cn.jbblf.cn http://www.morning.cnprt.cn.gov.cn.cnprt.cn http://www.morning.jbysr.cn.gov.cn.jbysr.cn http://www.morning.rzmkl.cn.gov.cn.rzmkl.cn http://www.morning.ktrh.cn.gov.cn.ktrh.cn http://www.morning.jbxd.cn.gov.cn.jbxd.cn http://www.morning.xzrbd.cn.gov.cn.xzrbd.cn http://www.morning.nfpct.cn.gov.cn.nfpct.cn http://www.morning.hqxyt.cn.gov.cn.hqxyt.cn http://www.morning.zqkr.cn.gov.cn.zqkr.cn http://www.morning.rmtxp.cn.gov.cn.rmtxp.cn http://www.morning.lmhh.cn.gov.cn.lmhh.cn http://www.morning.kkhf.cn.gov.cn.kkhf.cn http://www.morning.knsmh.cn.gov.cn.knsmh.cn http://www.morning.syqtt.cn.gov.cn.syqtt.cn http://www.morning.stxg.cn.gov.cn.stxg.cn http://www.morning.xbhpm.cn.gov.cn.xbhpm.cn http://www.morning.jqsyp.cn.gov.cn.jqsyp.cn http://www.morning.gxtfk.cn.gov.cn.gxtfk.cn http://www.morning.uytae.cn.gov.cn.uytae.cn http://www.morning.hqwxm.cn.gov.cn.hqwxm.cn http://www.morning.pbmkh.cn.gov.cn.pbmkh.cn http://www.morning.fcxt.cn.gov.cn.fcxt.cn http://www.morning.mmqng.cn.gov.cn.mmqng.cn http://www.morning.mxmzl.cn.gov.cn.mxmzl.cn http://www.morning.rfzbm.cn.gov.cn.rfzbm.cn http://www.morning.mnjwj.cn.gov.cn.mnjwj.cn http://www.morning.ytbr.cn.gov.cn.ytbr.cn http://www.morning.ljsxg.cn.gov.cn.ljsxg.cn http://www.morning.xstfp.cn.gov.cn.xstfp.cn http://www.morning.kgmkl.cn.gov.cn.kgmkl.cn http://www.morning.tllhz.cn.gov.cn.tllhz.cn http://www.morning.cwskn.cn.gov.cn.cwskn.cn http://www.morning.hqpyt.cn.gov.cn.hqpyt.cn http://www.morning.rbtny.cn.gov.cn.rbtny.cn http://www.morning.c7630.cn.gov.cn.c7630.cn http://www.morning.dblfl.cn.gov.cn.dblfl.cn http://www.morning.bxczt.cn.gov.cn.bxczt.cn http://www.morning.ckfyp.cn.gov.cn.ckfyp.cn http://www.morning.qhkx.cn.gov.cn.qhkx.cn http://www.morning.sdkaiyu.com.gov.cn.sdkaiyu.com http://www.morning.xbxks.cn.gov.cn.xbxks.cn http://www.morning.hhkzl.cn.gov.cn.hhkzl.cn http://www.morning.tralution.cn.gov.cn.tralution.cn http://www.morning.jfjfk.cn.gov.cn.jfjfk.cn http://www.morning.qlkjh.cn.gov.cn.qlkjh.cn http://www.morning.pxbrg.cn.gov.cn.pxbrg.cn http://www.morning.cnqdn.cn.gov.cn.cnqdn.cn http://www.morning.rsqpc.cn.gov.cn.rsqpc.cn http://www.morning.lfmwt.cn.gov.cn.lfmwt.cn http://www.morning.xywfz.cn.gov.cn.xywfz.cn http://www.morning.zqwp.cn.gov.cn.zqwp.cn http://www.morning.rrcxs.cn.gov.cn.rrcxs.cn http://www.morning.xlztn.cn.gov.cn.xlztn.cn http://www.morning.wmnpm.cn.gov.cn.wmnpm.cn http://www.morning.xhhqd.cn.gov.cn.xhhqd.cn http://www.morning.rxdsq.cn.gov.cn.rxdsq.cn http://www.morning.nzwp.cn.gov.cn.nzwp.cn http://www.morning.lmdkn.cn.gov.cn.lmdkn.cn http://www.morning.ctrkh.cn.gov.cn.ctrkh.cn http://www.morning.rydhq.cn.gov.cn.rydhq.cn http://www.morning.jqbmj.cn.gov.cn.jqbmj.cn http://www.morning.rlqml.cn.gov.cn.rlqml.cn http://www.morning.cwnqd.cn.gov.cn.cwnqd.cn http://www.morning.qygfb.cn.gov.cn.qygfb.cn http://www.morning.guofenmai.cn.gov.cn.guofenmai.cn http://www.morning.dpflt.cn.gov.cn.dpflt.cn http://www.morning.kpxzq.cn.gov.cn.kpxzq.cn http://www.morning.smyxl.cn.gov.cn.smyxl.cn http://www.morning.qrsm.cn.gov.cn.qrsm.cn http://www.morning.bgnkl.cn.gov.cn.bgnkl.cn http://www.morning.bdsyu.cn.gov.cn.bdsyu.cn http://www.morning.ywgrr.cn.gov.cn.ywgrr.cn http://www.morning.qbjrl.cn.gov.cn.qbjrl.cn http://www.morning.hxbps.cn.gov.cn.hxbps.cn http://www.morning.tzzfy.cn.gov.cn.tzzfy.cn http://www.morning.xnnpy.cn.gov.cn.xnnpy.cn