zoukankan      html  css  js  c++  java
  • JVM入门_笔记_狂神说

    JVM探究

    请你谈谈你对jvm的理解?java8虚拟机和之前的变化更新?

    什么事oom,什么是栈溢出StackOverFlowError?怎么分析?

    jvm的常用调优参数有哪些?

    内存快照如何抓取,怎么分析Dump文件?知道吗?

    谈谈jvm,类加载器你的认识?

    1、jvm的位置

    在操作系统之上,包含在jre里。

    2、jvm的体系结构

    栈、本地方法栈、程序计数器不会发生gc。

    jvm调优主要在堆,方法区有一小部分。

    3、类加载器

    作用:加载.class文件。

    新建的对象放入堆里面,引用(地址)放到栈,其中引用指向堆里面对应的对象。

    1)虚拟机自带的加载器
    2)启动类(根)加载器 Bootstrap ClassLoader
    3)扩展类加载器 Extension ClassLoader
    4)应用程序(系统类)加载器 Application ClassLoader

    4、双亲委派机制

    检查顺序从下至上,加载顺序从上到下。

    如果一个类加载器需要加载类,那么首先它会把这个类请求委派给父类加载器去完成,每一层都是如此。一直递归到顶层,当父加载器无法完成这个请求时,子类才会尝试去加载。

    5、沙箱安全机制

    控制远程代码执行的权限。

    jdk1.6之后的域。

    6、native

    包含native关键字的方法,说明java的作用范围拿不到了,会去调用底层c语言的库。

    会进入本地方法栈。

    调用本地方法接口JNI。

    JNI作用:扩展java的使用,融合不同的编程语言为java所用。 最初:c、c++

    它在内存区域中专门开辟了一块标记区域:native method stack,登记native方法

    在最终执行的时候,通过JNI加载本地方法库中的方法

    7、pc寄存器

    线程私有,保证线程顺序。

    8、方法区

    方法区是被所有线程共享的,所有的字段和方法字节码,以及一些特殊方法,如构造函数,接口代码也在此定义,简单说,所有定义方法的信息都保存在该区域,此区域属于共享空间

    存储内容:static、final、.class、常量池

    9、栈

    一旦线程结束,栈就over了。

    存储:8大基本类型 + 对象引用 + 实例的方法

    10、三种jvm

    HotSpot

    JRockit BEA

    J9 vm IBM

    11、堆

    Heap,一个JVM只有一个堆内存,堆内存的大小是可以调节的。

    堆内存划分:

    1)新生区 :Eden、S0、S1。对象在这里诞生、成长、甚至死亡

    Eden:所有对象都是在eden区new出来的。

    2)老年区

    3)永久区:jdk1.8以后,叫元空间(方法区在这里,常量池在方法区里)。这个区域是常驻内存的,用来存放jdk自身携带的class对象。

    12、新生区、老年区

    13、永久区(元空间)

    元空间使用的是直接内存,与新生代和老年代分开。

    14、堆内存调优

    OOM:1)尝试扩大堆内存看结果
    ​ 2)分析内存,看一下哪个地方出了问题(专业工具)
    Xms1024m Xmx1024m -XX:+PrintGCDetails
    在一个项目中,突然出现了OOM故障,那么该如何排除?研究为什么出错
    jprofiler作用:
    1)分析dump内存文件,快速定位内存泄露
    2)获得堆中的数据
    3)获得大的对象

    15、GC -> 常用算法

    轻GC
    重GC
    引用计数法:记录每个对象 的引用次数,长时间没有被引用的对象就被清除掉。

    复制算法:


    好处:没有内存碎片
    坏处:浪费内存空间,多了一半to空间永远是空的。
    复制算法最佳使用场景:对象存活度较低的时候 -> 新生区
    标记清除算法:

    优点:不需要额外的空间。
    缺点:两次扫描,严重浪费时间,会产生内存碎片。
    标记压缩:
    标记 -> 清除 -> 压缩

    16、JMM

    17、总结

  • 相关阅读:
    SQL语句大全
    软件设计方法
    统计在线的用户
    解放web程序员的输入验证
    OUTLOOK菜单类
    在asp.net 2.0中结合母板页meta,Tiele重置
    微软自带AJAX的用法
    在asp.net 2.0中发送邮件
    js编写的语法高亮引擎
    有关模版MasterPage的问题
  • 原文地址:https://www.cnblogs.com/fxw-learning/p/13776432.html
Copyright © 2011-2022 走看看