• 双亲委派


    类加载器的所用:加载class文件


    一.类加载器包括:
    启动类加载器:加载java核心类,jre/lib/rt.jar
    扩展类加载器: 它负责加载JRE的扩展目录,lib/ext或者由java.ext.dirs系统属性指定的目录中的JAR包的类。
    应用类加载器: JVM启动时加载来自Java命令的-classpath选项、java.class.path系统属性,或者CLASSPATH换将变量所指定的JAR包和类路径。
    自定义加载器:重写loadClass打破双亲委派
    JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化。

    二.类什么时候被加载
    1.实例化
    2.访问类的静态变量/静态方法
    3.放射class.forName("")

    三.类什么时候被卸载
    非自定义加载器加载的类不会被卸载,除非程序自己结束
    自定义类加载器类何时卸载:
    1、该类所有的实例都已经被回收,也就是java堆中不存在该类的任何实例。
    2、加载该类的ClassLoader已经被回收。
    3、该类对应的java.lang.Class对象没有任何地方被引用,无法在任何地方通过反射访问该类的方法。

    双亲委派机制:向上查询,向下加载,目的为了:避免重复加载类,为了安全
    沙箱安全机制:

    native本地方法:为了扩展其他语言的使用,最初是为了调用C/C++,在内存中开辟
    方法区:存放静态变量,常量,类信息,运行时的常量池
    PC寄存器:

    栈:一个线程一个栈,一个方法一个栈帧
    栈帧:局部变量表,操作数栈,方法出口

    堆:一个jvm只有一个堆内存,对内存大小可以调节
    垃圾回收主要在新生代和老年代
    新生代:eden space sivivorFrom sivivorTo MinorGC
    类的诞生和成长和死亡的地方
    老年代:FullGC
    永久代:物理上不存在,逻辑上存在。1.8以后叫元空间,元空间的类信息单独存储在JVM之外的内存中

    -xms 最小堆内存
    -xmx 最大堆内存
    内存快照:jmap -dump:format=b,file=heap.bin<pid>
    MAT/Jprofile


    dump文件快速定位内存问题,获取大对象

  • 相关阅读:
    ios 重构笔记
    ios uiwindow笔记
    ios静态库笔记
    ios app提交之前需要哪几个证书
    int、long、long long取值范围
    字节概述
    序列化概述
    LeetCode 最大连续子数列值
    198. LeetCode 打家劫舍
    git自定义关键字
  • 原文地址:https://www.cnblogs.com/wangyingshuo/p/14116812.html
Copyright © 2020-2023  润新知