手机网站建设价钱是多少,建设银行郑州市自贸区分行网站,怎么免费建自己的网站,wordpress 数据库 备份逐步细化 静态链接#xff1a;静态方法(符号引用)替换为内存指针或者句柄直接引用)
动态链接#xff1a;程序期间将符号引用替换为直接引用
对象头#xff1a; 指针压缩#xff1a; -XX:UseCompressedOops 开启指针压缩 减少内存消耗#xff1b;大指针在主内存 缓存间移…逐步细化 静态链接静态方法(符号引用)替换为内存指针或者句柄直接引用)
动态链接程序期间将符号引用替换为直接引用
对象头 指针压缩 -XX:UseCompressedOops 开启指针压缩 减少内存消耗大指针在主内存 缓存间移动数据占用带宽大 GC压力大 jvm通过对对象指针存入堆内存时进行压缩编码32位取到cpu寄存器 解码方式优化35位 堆内存大于32g压缩指针失效强制使用64位对java对象寻址 小于4g 不需要启动指针压缩 直接去除高32位地址使用低虚拟空间
Launcher 单例
内存分配
逃逸分析 在方法被定义后可能被外部方法引用 不会逃逸的对象可在栈上分配内存方法结束时跟随栈内存一起被回收掉 默认开启- XX:DoEscapeAnalysis 7默认开启 标量替换不会逃逸 且对象可进一步分解jvm不会创建该对象分解若干成员变量 -XX:EliminateAllocations
标量与聚合量标量不能分解掉量基本数据类型 reference类型 聚合量可分解掉量对象 堆分配 内存模型
栈帧内存空间独立 参数
-Xms -Xmx -Xmn
-XX:MaxMetaspaceSize元空间max值默认 -1 不限制
-Xss 栈大小默认1m值越小栈帧越小512kjvm开启线程越多
-XX:MetaspaceSize 元空间初始大小 字节为单位 21M 到达触发full gc收集器对该值调整释放了大量空间则调低释放很少空间 不超max提高该值
双亲委派父加载器
类型
引导类加载器jre的lib核心类
扩展类加载器ext
应用程序加载器appClassLoader classpathtarget包
自定义加载器
过程 appClassLoader urlClassLoader loadClass(全类名)
findLoadedClass已经加载的类c parent.loadClass(name,resolve:false);加锁 sync 父的loadClass extClassLoader循环调super
findBootstrapClassOrNull引导类加载器 已经加载的类去
findClass(); 可打破双亲委派跳过super urlClassLoader: path 类路径 ucp.getResource加载类 defineClass
打破
tomcat
web容器不同应用程序可能会依赖同一三分库的不同版本
commonLoader基本类加载器class可被tomcat本身及wabapp访问 sharedLoader:各webapp共享类加载器 加载路径中class对于所有webapp可见对tomcat容器不可见
catalinaLoadertomcat容器私有类加载器加载路径中class对webapp不可见
webappClassLoader各webapp私有类加载器加载路径中的class文件对当前webapp见每个war有自己的webappClassLoader互相隔离不同war包应用引入不同spring版本
原因
沙箱安全机制自己写的类不会被加载防止核心api库被随意篡改
避免类重复加载父已经被加载类该类没必要再加载一次
全盘委托 当一个classload装载一个类时除非显示使用另一个classloader该类所依赖及引用的类也由这个classloader载入
自定义类加载器 继承java.lang.ClassLoader类 public class FindClassLoader {static class MyClassLoader extends ClassLoader{private String classPath;public MyClassLoader(String classPath){this.classPath classPath;}private byte[] loadByte(String name) throws Exception{name name.replaceAll(\\.,/);FileInputStream fis new FileInputStream(classPath/name.class);int len fis.available();byte[] data new byte[len];fis.read(data);fis.close();return data;}protected Class? findClass(String name) throws ClassNotFoundException{try {byte[] data loadByte(name);//字节数组转class对象字节数组是class文件读取后最终的字节数组return defineClass(name,data,0,data.length);}catch (Exception e){e.printStackTrace();throw new ClassNotFoundException();}}}public static void main(String[] args) throws Exception{//初始化自定义类加载器 先初始化父类classloader会把自定义类加载器的父加载器appClassLoaderMyClassLoader classLoader new MyClassLoader(读取哪个路径);Class clazz classLoader.loadClass(类全路径);Object obj clazz.newInstance();Method methodclazz.getDeclaredMethod(哪个方法,null);method.invoke(obj,null);System.out.println(clazz.getClassLoader().getClass().getName());}}