• 面试之什么是java虚拟机


    java虚拟机体系结构 方法区 堆 java虚拟机栈 本地方法栈
    方法区 java虚拟机编译的class文件中二进制数据类型解析数据存在方法区中 是所有线程共享
    和存在数据的线程安全问题 当二个线程使用同一类并且类还被加载 则让一个线程加载 另一个
    线程等待
    java虚拟机栈 是线程私有的 既决定了线程的个数 存放的变量 对象引用
    堆 是所有线程所共享 存放的是所有的对象 涉及到多线程的并发 对象的引用 直接引用 使用句柄引用
    直接内存不是java虚拟机的一部分 加快GC的垃圾回收 但直接内存出现内存溢出还难排除
    java虚拟机的加载机制 双亲委派模式 根类加载器 扩展类加载器 应用类加载器 分支 用户自定义加载器 扩展类加载器 应用类加载器会先加载jdk的源码包 然后是用户自定义的包 比如java.lang.String自定义的类永远不会被加载
    gc的垃圾收集算法
    1.引用计数算法 确定不能处理循环引用的对象
    2.标记清除算法 先将需要清除的标记出来然后进行清除 会产生很多的内存碎片
    3.复制算法 先将内存分为2半 将需要清除的放入另一半中 浪费空间
    4.标记整理算法 是结合了标记清除和复制算法的各自的优点 先将需要清除的标记并且整理在一旁
    既不会浪费内存也不会产生内存碎片
    5.分代收集算法 根据对象的不同生命周期采用不同的算法
  • 相关阅读:
    IDEA的JDBC报错解决
    java注解
    Java反射
    javaIO
    工程师的认知
    前端的一些性能提升
    ES6函数的扩展
    2020新年愿望
    高维护性的javascript
    Chrome Dev tools的几点小技巧
  • 原文地址:https://www.cnblogs.com/wgj-master/p/10394734.html
Copyright © 2020-2023  润新知