zoukankan      html  css  js  c++  java
  • JVM学习

    1、jvm的架构图

    2、类加载器作用:

    双亲委派机制:

    当Application ClassLoader 收到一个类加载请求时,他首先不会自己去尝试加载这个类,而是将这个请求委派给父类加载器Extension ClassLoader去完成。

    当Extension ClassLoader收到一个类加载请求时,他首先也不会自己去尝试加载这个类,而是将请求委派给父类加载器Bootstrap ClassLoader去完成。

    如果Bootstrap ClassLoader加载失败(在<JAVA_HOME>lib中未找到所需类),就会让Extension ClassLoader尝试加载。

    如果Extension ClassLoader也加载失败,就会使用Application ClassLoader加载。

    如果Application ClassLoader也加载失败,就会使用自定义加载器去尝试加载。

    如果均加载失败,就会抛出ClassNotFoundException异常。

     3、本地方法栈

    native:凡是带了native关键子的,说明java的作用范围达不到,回去调用底层c语言的库,会进入本地方法栈

    调用本地方法本地接口JNI

    JNI作用:扩展Java的使用,融合不同的变成语言为Java所用!最初:C,C++

    Java诞生的时候,C、C++横行,想要立足,必须要有调用C、C++成程序,在最终执行的时候,加载本地方法库中的方法,

    通过JNI.

    Java程序驱动打印机,管理系统,Robat,企业级应用中较为少见

    4、  寄存器

    CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。

    5、方法区

    static finall (class信息)常量池,实例变量是在堆中与方法区无关。

    6、栈

    栈:先进后出-桶模型

    main方法里面调用了test方法,test方法先结束,main最后结束。栈空代表方法结束。不存在垃圾回收问题。

    队列:先进先出-管道模型

    7、堆内存

     两块survivor区,from和to,谁空谁是to。

    添加命令:打印gc日志

     -Xms8m -Xmx8m -XX:+PrintGCDetails

    解决生产中oom错误

     输出dump文件

    -Xms8m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError

    通过JProfiler文件分析。

    8、GC算法

    1)、扫描算法:先扫描,把需要gc的对象标记,然后在对没有标记的对象清除

    缺点:两次扫描严重浪费时间,会产生内存碎片

    优点:不需要额外的空间

    2)、扫描压缩:优化扫描算法,再一次扫描,像一端移动存活的对象

    3)、复制算法:每次Eden区满了,轻量GC后,存活的对象进入一个幸存区(to区),然后会把另外一个

    幸存区的(from区)的幸存对象复制到to区,from和to区交换。

    缺点:浪费一块幸存区,to区

    优点:不会产生内存碎片

    4)引用计数法

    对每个对象加个计数器,知道计数器为0就清除该对象,一般不用,如果大型项目都是数量庞大的对象,计数器会

    严重消耗内存。

     总结:

    内存效率:复制算法>标记清除计算法>标记清除压缩

    内存整齐度:复制算法>标记清除压缩>标记清除计算法

    内存利用率:标记压缩算法=标记清除算法>复制算法

    没有最好的算法,只有最合适的算法----GC:分代收集算法

    年轻代:存活率低,使用复制算法

    老年代:存活率高,区域大,标记清除(内存碎片不是太多)+标记清除压缩混合实现

    ------------恢复内容结束------------

  • 相关阅读:
    C语言、指针的指针和野指针的问题
    常见证书格式和转换
    cation,validation,qualification有何区别
    Cygwin + OpenSSH FOR Windows的安装配置
    python static variable
    45个与众不同的非常棒网页设计案例
    65个精心设计的富有灵感的电子商务网站案例
    60个抢眼的企业网站设计案例
    26个有用的创建视觉图片网站的jQuery插件
    Android 图像用户界面免费的PSD设计文件
  • 原文地址:https://www.cnblogs.com/wenwenzuiniucha/p/14881883.html
Copyright © 2011-2022 走看看