首页 > 其他 > 详细

JVM学习

时间:2019-08-14 18:59:52      阅读:111      评论:0      收藏:0      [点我收藏+]

JVM的理解以及java8的了解

JVM简介:
java虚拟机本质是就是一个程序, 通过类加载器加载java文件到数据区,然后用引擎与操作系统进行交互
技术分享图片

运行在操作系统之上,与硬件没有直接交互
技术分享图片

加载java文件

JVM classloader类加载器的(继承关系)
  • 1.启动类加载器(bootstrap--c++)
    虚拟机自带的加载器(路径jre/lib/rt.jar),加载java自带的class文件,java依赖库(jre中),获取加载器返回对象null
  • 2.扩展类加载器(Extension--java)
    加载第三方依赖类(第三方jar包)获取加载器为:ExtClassLoader
  • 3.应用程序类加载器(App--java):也叫系统类加载器,加载当前应用的classpath的所有类
    AppClassloader 自定义类当前的加载器
  • 4.自定义加载类(自己编写继承实现类 Java.lang.ClassLoader)

连接操作系统

执行引擎Execution Engine
native interface
java本身不能对操作系统底层进行访问和操作 但是可以通过JNI接口调用其他语音来实现对底层的调用

核心块

Native Method Stack
native栈,存放native方法
PC寄存器
每一个线程都有一个程序计数器,是线程私有的,就是一个指针,只想方法区中的方法字节码(用来存储指向下一条指令的地址,也即将执行的代码),有执行引擎读取下一条指令,是一个非常小的内存空间,几乎可以忽略
  • 1、也叫栈内存,主管java程序的运行,线程创建时创建,它的生命周期跟随线程的生命周期;线程结束,栈内存就释放,$\color{blue}{对于栈来说不存在垃圾回收问题},只要线程一结束,栈就over,生命周期和线程一致,是线程私有的
    基本类型的变量、实例方法、引用类型变量都是在函数的栈内存中分配
  • 2、java.lang.StackOverflowError
    一致调用栈中的方法,死循环递归调用;导致java.lang.StackOverflowError
方法区

方法去是线程共享的,通常用来保存装在的类的原结构信息

堆(Heap)

堆内存逻辑上分为三个区:
技术分享图片

  • 1.新生区
    - a.伊甸区
    new 的对象存放在伊甸园区,
    - b.幸存0区
    - c.幸存1区
    默认幸存15次之后去养老区
  • 2.养老区
  • 3.永久存储区(非堆内存)java不在有永久带,取而代之的是【元空间】
    堆内调优
    XX|名称|介绍
    -|-|-
    -Xms|堆内存的初始大小|设置初始分配大小,默认为物理内存的“1/64”
    -Xmx|堆内存的最大设置|最大分配内存,默认为屋里内存的“1/4”
    Minor GC 轻量级的垃圾回收

Major GC

Java 8 不再有永久带,取而代之的是元空间(Metaspace)

堆内存溢出,GC回收的速率小于垃圾产生的速率;以至于垃圾的大小大于jvm设置的最大内存
java.lang.OutOfMemoryError:
String str = "www.baidu.com";
while (true){
str = str + new Random().nextInt(12122) + new Random().nextInt(99999999);

   }

MAT eclipse Memory Analyzer

内存快照文件抓取与分析

分析dump文件,快速定位内存泄漏问题

-Xms1m -Xmx8m -XX:+heapDumpOutOfMemoryError 生成内存快照文件(MAT分析)

javap jmap jstack jinfo jqs jshell

说明

类加载器机制:双亲委派机制 + 沙箱机制:防止恶意代码对java代码的破坏,表现:不能自己编写原有的类,如自定义String类

什么是OOM,写代码实现Stack Overflow和OutOfMemoryError

JVM常用的调优

内存快照抓取和MAT分析hprof文件

idea 内存快照抓取hprof文件

  • 1、安装插件 JProfiler
  • 2、

JVM学习

原文:https://www.cnblogs.com/monkay/p/11339350.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!