JVM引言和简单介绍

7 篇文章 0 订阅
本文从程序员的角度出发,介绍了学习JVM的重要性,对比了Java与C++在内存管理上的区别,并探讨了JVM的广泛应用和基本结构。作者强调了底层技术学习的必要性,指出Java的自动内存回收机制虽提高了开发效率,但也可能导致忽视内存问题。同时,JVM的跨平台特性使得Java成为多语言运行的基础。文章还展示了JVM的内存区域划分,并预告将深入讨论各个部分。
摘要由CSDN通过智能技术生成

        作者处于学习阶段,正在学习jvm,作为学生,我会用更通俗的说法,来叙述自己对jvm的了解。愿各位大佬看到有见解错误的地方和叙述不好的地方,能够帮忙纠正。来帮助大家更加深入的了解jvm。

一、jvm简单的引言和介绍

        我们在学习过程中,大多数都是偏向于封装好的技术,学习各种各样的框架,好多人会忽视掉底层运行的学习,这样可能会导致在项目中遇到非代码性的问题不知从何解决,如线上系统卡死,报OOM的错误没有足够的内存、jvm的垃圾回收问题、新项目的jvm参数设置一窍不通。

        在我们日常编写的程序都是在框架的基础上来编写的,而我们编写的程序是要经过许多层的转换,才能变成机器所能读懂的语言。平时编码所对应的结构图如图1所示:

图1 

在我们日常的编程中,大多数的编程人员认为上层的框架才是学习的重点,这样是不对的。框架是不断更新的,而我们所学习的底层是不变的。不能完全将重点放在上层技术上。如果说框架是我们学习是的定理,那么java虚拟机就是公式的推导过程,他才是公式出来的关键。

二、java和c++在内存回收上区别

        java的独特机制就是内存自动回收机制 ,而c++中内存是需要开发人员自行处理的。在此列出java和c++中的不同,和对应的特点。

javac++
回收机制自动处理垃圾开发人员管理垃圾
优点开发人员不需将大量精力放在垃圾回收上,可以大大提高开发效率。垃圾回收机制可以帮可以让开发人自行管理内存,如果开发人员本身能力较强可以有很好的垃圾处理方案
缺点会导致开发人员忽视内存处理问题,垃圾收集不是万能的。如果不懂得底层原理,会在项目中出现很大的问题如果开发人员技术较弱,就会导致内存很乱

表1

三、jvm的广泛应用

        jvm(java 虚拟机),虽然叫做java虚拟机,但是不仅仅能解释java代码,只要符合jvm的字节码规范要求,无论什么语言都可以运行。由于这一点的存在,我们的java代码便是跨平台的语言,因为最终都需要转换为字节码(java代码需要转成字节码文件在传给jvm,我们平时编码产生的out文件夹里面的就是字节码文件,如图2),java可以和很多遇见进行交互等,各自只需要满足自己代码编写的规范,所生成的字节码,都是符合jvm规范的,便可以交互。

        

图2 

四、 JVM的整体结构

        我们平时使用尝使用的虚拟机为HotSpot VM,平时安装的jdk对应的就是HotSpot VM。图3所示

 图3

        展示一下自己画的内存结构图,如图4所示,其中方法区和堆为多线程共享,而虚拟机栈、本地方法区、程序计数器为单线程独享。

 图4

 后续的更新会根据该结构图进行具体的更新。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱分享的小邓

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

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

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

打赏作者

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

抵扣说明:

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

余额充值