jvm基础实战入门

1.java程序执行流程以及简要说明
2.jvm内存模型以及简要说明
3.jvm启动参数配置说明
4.Linux查看java设置内存大小
5.关于内存的几个常见的术语说明
6. 内存溢出与内存泄露
整理jvm相关内容,会持续更新!

1.java程序执行流程以及简要说明

在这里插入图片描述
流程简要说明:
    java文件编译成.class文件通过类加载器加载到jvm中的方法区,并在堆中创建class 对象.但是.class这种字节码文件不会直接被操作系统识别,所以会由执行引擎将字节码文件编译成为底层操作系统所识别的指令文件,这个过程中需要通过JNI调动C++或是C语言等其他语言完成.
四种类加载器:
    启动类加载器(bootstrap ClassLoader):启动类加载器,加载javahome/lib下面的包,比如说rt.jar;
    拓展加载器(extension CloassLoader): 加载jre安装目录/lib/ext下面的jar包;
    应用加载器(application CloassLoader): 加载classpath下面的类文件,就是加载自己写的类文件.
自定义加载器:一般加载自定义类.

2.jvm内存模型以及简要说明

在这里插入图片描述
    jvm内存模型由五部分组成,其中堆与方法区属于线程共享,其余三个为线程私有.
    堆:在jvm内存中占的面积最大.主要作用是用于存储对象以及字符串常量(jdk8),也是java中进行垃圾回收的主要区域,GC堆说的就是garbage collected heap.
对内存说明
堆补充说明:永久区存储的是jvm内置引用或是第三方的对象,不会进行垃圾回收.
    方法区:主要存储:类信息(可以理解成是类的全类名,成员方法,成员变量)、常量、静态变量;
    程序计数器:可以理解成是jvm执行字节码文件时存储的字节码地址值,标记程序执行到的位置;每个程序对应一个程序计数器,相互之间不会进行干扰.比如说多线程值执行时,cpu是随机分配执行权,不同的线程之间会存在切换的情况,但是切换之后程序执行到哪就需要通过程序计数器获取,程序计数器存储字节码执行的位置地址.
     虚拟机栈: 作用是jvm执行自定义java方法进行入栈出栈的操作;储存数据类型:8中基本数据类型、对象实例方法、实例对象引用。
    本地方法栈:作用也是用于方法的入栈与出栈,区别是虚拟机栈只能用于native本地方法;平常说的栈溢出就是说栈中方法过多导致.
3.jvm启动参数配置说明

-Xms:java应用程序堆内存大小(可以认为java项目启动时需要使用操作系统多少内存)
-Xmx: java应用程序最大占用内存(可以理解为java项目运行过程中最多从操作系统中能拿到多少内存)
-XX:+PrintGC:开启打印 gc 信息;
-XX:+PrintGCDetails:打印 gc 详细信息

4.Linux查看java设置内存大小

 java -XshowSettings:vm -version
java -XshowSettings -version

默认情况下,JVM的Max Heap Size是系统内存的1/4

5.关于内存的几个常见的术语说明

     totalMemory():运行中的java应用程序已经从操作系统中拿到的内存.
     maxMemory():支持java应用在进行过程中从操作系统能拿到最大的内存,单位为字节(同Xmx设置)
     freeMemory():指从操作系统中拿到的内存但是没有用上的内存.
idea中设置jvm参数的方法:
1M=1024KB=1024*1024Byte
在这里插入图片描述

6. 内存溢出与内存泄露

     内存溢出:简单理解就是程序运行时,申请的内存空间不足以程序运行,就是内存不够用;
     内存泄露:应用向系统申请内存之后没有及时归还,导致可申请内存减少.最终导致申请内存不够用(学名叫内存溢出).
     简单例子说明:你只有从国家申请的1000元贫困补助金,张三知道后向你借300,李四向你借400,借钱的时候约定一个月之后归还,但是一个月之后没有进行归还,这就是内存泄露.当你想买一个500元的电暖气过冬时发现,你买不了,这就是相当于内存溢出.

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卖柴火的小伙子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值