初识JVM

初识JVM

这段时间学习了一些JVM的相关知识,在此和大家分享一下。文章内容属于个人理解,存在错误理解欢迎大家指正。



前言

首先,给大家引入几个概念,jdk、jre、jvm。jdk是java开发工具包,jdk中包含jre和各种开发工具包javac/jinfo/jmap…。在JDK的安装目录下有一个名为jre的目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库。jre是java的运行环境,jre中包含jvm和运行时类库。jvm是java虚拟机的简称,目前最火的当属HotSpot,本系列文章也是主要围绕HotSpot进行讲解。


一、什么是JVM?

虚拟机顾名思义,就是虚构出来的计算机。没有硬件的加持,是通过仿真技术来模拟计算机的各种实现。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。

二、java为什么要使用jvm?

1.跨平台一次编译,到处运行

虽然java是编程语言的一种,但是计算机并不能直接识别java代码。计算机的底层只能识别0101这种类型的机器码,这与计算机底层的硬件有关。像c/c++这种编译语言,会将代码直接编译为二进制可执行文文件。在linux系统下是.obj,在windows下是.exe.而java是一门解释性语言,通过编译器生成的字节码文件,不管那个平台都可以通过jvm执行字节码文件。所以java可以跨平台执行。

在这里插入图片描述

在这里插入图片描述

2.jvm自带托管环境,解放双手

一提到jvm大家就应该会想到大名鼎鼎的GC(Garbage Collection),在这我们先简单的提一下,后面的章节,将详细讲解。
GC的出现,让程序员们不需要,关注内存管理方面的内容,不需要担心出现,申请了内存,忘记释放的风险。不过GC也不是所有内存都会进行管理,使用UnSafe类申请的内存不会被GC管理。
除了GC之外,jvm还有数组越界、动态类型、安全权限等等功能。

三、存在的问题

java虚拟机的出现给我们带来便利的同时,也存在一些问题。

1.代码运行速度相对较慢

经过上面的讲解,大家应该都知道了,java语言需要先将代码编译为字节码文件,加载到虚拟机后,才只能编译为可执行文件。所以相对与编译语言运行速度比较慢。

2.不对外暴露指针,灵活性不够

熟悉c/c++这种语言的朋友,在使用java的时候,可能会有一点别扭。因为java没有指针操作,而将指针操作全部封装了起来。不能进行一些灵活的操作。

3.不能直接与底层交互

因为java跨平台的特性,所以java并不能直接与底层操作系统交互。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值