zoukankan      html  css  js  c++  java
  • jvm虚拟机分享课笔记

    深入理解jvm虚拟机分享

    1、 jvm执行流程

    java-编译-.class—类加载器(随时随地加载)--【进入java虚拟机】

    执行引擎—本地方法接口---本地方法库

    运行时数据区

    2、 运行时数据区

    1) 程序计数器:记录程序执行位置,线程安全,计数器互不影响

    2) 栈:创建一个线程,就会创建一个栈,执行一个方法就会创建一个栈帧,线程不共享 StackOverFlow

    递归调用有内存泄漏风险

    3) 堆:最大一块,java线程共享,存储对象地方,GC管理的主要区域,还分为新生代和老年代

    4) 方法区:要加载类的信息(名称、修饰符等)、类中的静态变量,类中定义为final类型的变量、勒种Filekd信息、类中的方法信息。是被java线程锁共享的,不会频繁被GC回收,超过内存大小会抛出OutOfMemeory错误

    5) 本地方法区 Native方法服务

    3、 Java对象访问模式

    1)、什么类型产生垃圾

    引用类型

    堆内存  栈内存  方法去

    2)Object obj = 描述的是保存在栈内存中,而保存堆内存的引用,数据保存在本地变量表

       new Object() 一个真正的对象,保存在堆内存中

    4、 通过句柄访问

    本地变量表—句柄池—对象实例数据指针+对象类型数据指针-à找到对应的对象实例和对象类型

    5、 通过直接指针访问---hotSpot虚拟机

    本地方法表---对象+数据---对象类型

    2006年开源,sun改良

    6、 三种JVM

    JVM中不在保存句柄

    Sun 改良了hotSpot

    BEA 的JRockit

    IBM JVMs

    7、 JVM垃圾回收

    对不需要的对象进行标记,而后进行清除

    JVM堆内存

    1.8后 使用了元空间,去除了永久带

    为什么取消永久带

    为了将hotSpot与JRockit两个虚拟机标准联合为一个

    8、堆内存分为三块

    新生代:新对象和没达到一定年龄年轻代

    老年代:对象被长时间使用的对象。老年代空间要比年轻代大

    元空间:像一些方法中的操作的临时变量,对象等,是物理内存使用

    每个代都有伸缩区,可以调配

    8、 年轻代GC实现算法:复制算法

    算法:复制采用的方式为从根集合扫描出存货的对象

  • 相关阅读:
    58) Gitlab加入LDAP认证 (windows AD)
    57) 《乌合之众》读书笔记【1】
    56) 监控系统简单介绍
    前端学习建议汇总(留着自己看的心灵鸡汤)
    vscode分享代码插件Polacode
    PHP论坛实现积分系统的思路
    thinkphp删除图片的方法实现
    php高并发问题解决思路
    PHP和Thinkphp模拟留言板,应对XSS攻击(超完整!)
    sql server特殊字符查询问题及ESCAPE的使用
  • 原文地址:https://www.cnblogs.com/shuaiandjun/p/9665324.html
Copyright © 2011-2022 走看看