无忌炼神功(热身层 )———— 初识JVM

自我审视

作为本人的第一篇博客,讲JVM之前,先讲一下我自己吧!我呢,也是刚进入互联网行业不久,不到20年,唉!!
具体呢也就一年左右吧!现在在杭州上班。那怎么就想着写博客呢?下班他打游戏不香吗?香!当然香了。
本人某农药也是王者35星了,哈哈!但是呢,还是一个字 :没意思!那肯定有人就会说了,这娃应该是加班不够,
闲的。这还真不是,我只是没有你们外界传言程序员这行加班那么严重罢了。(我领导应该不逛博客吧!)
哈哈,言归正传,主要原因还是想着 :天降大任于斯人也,不能虚度光阴呀。于是开始了学习,干咱们这行的都知道,不学习那等于自毁前程呀。
所以呢,就想把学习的知识记录到博客中,毕竟 子曰:“温故而知新” !好了,前奏这么多咱们也该切入正题了!
在这里插入图片描述

什么是JVM?

啥是JVM?Java虚拟机!
官方定义:一种能够运行java字节码的虚拟机。java字节码是已经经过编译,但与特定机器码无关,需要解释器转译后才能成为机器码的中间码。
通俗点理解呢就是:它实现了java语言“一次编译,到处运行”的理想。JVM是支持java语言运行的环境,根据不同的操作系统有不同的版本。
它之上运行的是java程序,它的作用是能让java程序跨平台运行。如果没有JVM,那我们实现一个功能,需要编写N套代码:window版,Linux版等。

JVM的内存模型

嗨!JVM !
恩?咋了?
刚才咱们只限于表面的认识,现在咱们来点更深入的交流!来爆个照呗!
。。。WC!禽兽!
在这里插入图片描述

从图片看出JVM运行时的一个流程为:
字节码文件(.class文件)被类加载器(class Loader)加载进运行是数据区,然后执行引擎执行这些字节码。
若需要与异构系统进行交互,则可以通过本地接口进行
注: 方法区和堆是所有线程共享的数据区(因此也会有后面的内存分配以及垃圾回收)。
	虚拟机栈、本地方法栈、程序计数器是线程私有的。以栈举例,每个线程创建时都会创建自己对应的栈区,
	里面的数据是私有的,其它栈不能访问

(一)Program Counter Register :程序技术器

这是一块较小的内存空间,它可以看做是当前的线程所执行的字节码的行号指示器。
通俗点来说就是:储存每条线程即将执行的下一天JVM指令。若当前执行的线程是本地方法,则这个技术器值为空

(二)Java Vritual Machine Stack :Java虚拟机栈

官方说法为:虚拟机栈描述的是Java方法执行的线程内存模型:每个方法被执行的时候,Java虚拟机都会同步
创建一个栈桢(方法运行期很重要的基础数据结构)用于储存局部变量表、操作数栈、动态连接、方法出口等。
作为小菜鸡的个人理解:主要用来存储Java虚拟机的8种基本数据类型:boolean、byte、char、short、int、
float、long、double,和非基本数据类的对象引用和returnAddress类型。
**所以其所需的内存空间在编译期间就能完成分配,在运行期间不会改变其大小。**

(三)Native Method Stacks:本地方法栈

在这里插入图片描述
本地方法栈和虚拟机栈的作用是相同的,只不过虚拟机栈执行的是java方法,本地方法栈执行的是Native方法。
java方法就是开发人员写的java代码,Native方法就是一个java调用非java代码的接口。

(四)Java Heap:Java堆

引言:栈解决了程序如何运行数据、处理数据的问题,那么堆则是解决了数据如何储存的问题。
对于程序员来讲,关注最多的就是虚拟机中的栈与堆。
Java堆是虚拟机管理内存中最大的一块,约占每个进程内存的四分之三。
主要用于存放对象实例,几乎所有的对象实例都在这里进行内存分配。

(1)Java堆的分代
在这里插入图片描述
新生代、老年代和永久代主要管理内存的回收。
而所有的线程共享的Java堆可以划分出多个线程私有的分配缓冲区来管理内存的分配。
新生代、老年代和永久代(Java8中改为元空间)三者之间的联系:
若新生代中里面的尹甸区用完了,程序又要创建新的对象则会进行一下操作:
1、JVM的垃圾回收器对其进行垃圾回收,将不再被其他对象所引用的对象进行销毁。
2、然后将剩余对象移动到下一区。

(五)结语

以上只是JVM的冰山一角,本人也是参考《深入了解Java虚拟机》和博客各位大佬写的总结写出来的。作为本人的第一篇博客,不足之处还望大家指出

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值