初步学习理解JVM

JVM图解

在这里插入图片描述

文解(来源于百度百科)
  • 定义:JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

  • Java虚拟机有自己完善的硬件架构,如处理器、堆栈等,还具有相应的指令系统。

    Java虚拟机本质上就是一个程序,当它在命令行上启动的时候,就开始执行保存在某字节码文件中的指令。Java语言的可移植性正是建立在Java虚拟机的基础上。任何平台只要装有针对于该平台的Java虚拟机,字节码文件(.class)就可以在该平台上运行。这就是“一次编译,多次运行”。

    Java虚拟机不仅是一种跨平台的软件,而且是一种新的网络计算平台。该平台包括许多相关的技术,如符合开放接口标准的各种API、优化技术等。Java技术使同一种应用可以运行在不同的平台上。Java平台可分为两部分,即Java虚拟机(Java virtual machine,JVM)和Java API类库。

与JVM有关的问题
  1. JVM的位置

在这里插入图片描述

2.JVM体系结构

在这里插入图片描述

  1. 双亲委派机制
    • 类的实例化过程

在这里插入图片描述

具体图解

在这里插入图片描述

  • 双亲委派机制图解(此处参考了IT烂笔头的博客)

在这里插入图片描述

  • 常见的类加载器(此处引用了IT烂笔头的博客)

    Java是运行在Java的虚拟机(JVM)中的,但是它是如何运行在JVM中了呢?我们在IDE中编写的Java源代码被编译器编译成.class的字节码文件。然后由我们得ClassLoader负责将这些class文件给加载到JVM中去执行。
    JVM中提供了三层的ClassLoader:

Bootstrap classLoader:主要负责加载核心的类库(java.lang.*等),构造ExtClassLoader和APPClassLoader。用c++编写的,该加载器无法直接获取

ExtClassLoader:主要负责加载jre/lib/ext目录下的一些扩展的jar。

AppClassLoader:主要负责加载应用程序的主函数类

  1. 沙箱安全机制
  • 基础知识

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. Native,方法区,

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 细分

在这里插入图片描述

内存转换:1G=1024M 1M=1024K 1K=1024字节 1字节=8位

代码分析运行时堆内存内部的情况

public class runtimememory {
    public static void main(String[] args) {
        long t1=Runtime.getRuntime().maxMemory();
        long t2=Runtime.getRuntime().totalMemory();
        long t3=Runtime.getRuntime().freeMemory();
        //-Xms1024m(对应totalmemory) -Xmx1024m(对应maxmemory) -XX:+PrintGCDetails   这是我调的参数
        System.out.println("运行时jvm尝试申请的最大内存"+t1/1024/1024+"MB");
        System.out.println("运行时jvm初始化的最大内存"+t2/1024/1024+"MB");
        System.out.println("运行时jvm 剩余的内存"+t3/1024/1024+"MB");

        //totalmemory是动态的,如果不设定初始值的话
    }
}

运行结果

运行时jvm尝试申请的最大内存981MB
运行时jvm初始化的最大内存981MB
运行时jvm free掉的最大内存966MB

调参面板

在这里插入图片描述

常见调参命令

// -Xms 设置初始化内存分配大小

//-Xmx 设置最大分配内存

// -XX:+PrintGCDetail 打印GC信息

//-Xms1m -Xmx1m -XX:+HeapDumpOnOutOfMemoryError

生成DUMP文件,用于故障分析

OOM故障排除

在这里插入图片描述

————————————————
版权声明:本文为CSDN博主「IT烂笔头」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/codeyanbao/article/details/82875064

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值