Java常识(二)

本文深入探讨了Java虚拟机(JVM)的原理,包括其作为虚拟计算机的结构、Java代码的执行过程以及HotSpot虚拟机的应用。同时,详细阐述了垃圾回收(GC)机制,说明了如何在Java中自动管理内存,并介绍了不同类型的GC算法。此外,还提及了字节码验证的重要性,确保Java代码的安全执行。
摘要由CSDN通过智能技术生成

1.JVM(Java Virtual Machine):Java虚拟机。
①是一个虚构出来的计算机规范结构。
②是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
③是Java最核心的部分,在计算机内存中虚拟并提供了java代码可以在其中运行的基础环境。
④是java代码和计算机之间的一个桥梁。

1.编写好的java代码,编译成了class文件,然后加载到JVM中再运行。
java代码编译后计算机并不能直接运行,必须要经过JVM进行解释后,才能运行。所以,java其实并不算是真正的编译语言。
2.JVM本质上是一个规范,每个公司都可以按照这个规范实现自己的JVM虚拟机。
我们现在默认使用的JVM就是oracle公司提供的名为HotSpot的虚拟机。
3.当使用java命令来运行程序的时候,会先启动JVM,这个JVM在JDK中对应了一个dll或so文件。而Linux下面的so文件就类似于Windows中的dll文件。

2.GC(Garbage Collection):垃圾回收器。
①在java语言中,编程人员不需要在代码中控制内存的开辟和释放。
在java代码中,开辟要使用的内存空间,使用new关键字即可完成。
在JVM中,对内存空间的释放,使用GC来完成。
②在JVM中,不同类型的GC,会根据不同的算法,对不同的内存区域内标记为垃圾的空间,进行回收释放。这个过程不需要编程人员的干预,会主动完成。
③在代码中,也可以调用JavaSE-API提供的方法,通知GC现在去进行垃圾回收的工作:

java.lang.System.gc();
java.lang.Runtime.gc();

虽然可以主动通知,但是最后GC并不一定会真的的立刻执行。因为这个垃圾回收的过程什么时候执行,最终还是要根据GC的具体算法和当前内存的使用情况来确定。

3.字节码验证:

(1)编写好的java代码,编译成class文件(字节码),再被JVM加载到内存之后,首先要经过字节码验证主要包括:
①检查当前class文件的版本和JVM的版本是否兼容。
②检查当前代码是会破坏系统的完整性。
③检查当前代码是否有栈溢出的情况。
④检查当前代码中的参数类型是否正确。
⑤检查当前代码中的类型转换操作是否正确。
(2)验证通过后,再确定哪些代码是解释执行的,哪些代码是JIT即时编译执行的。
①class文件内容需要让JVM进行解释执行,解释成计算机可以执行的代码。整体效果就是JVM解释一行代码就执行一行代码。所以如果java代码全是这样的运行方式的话,效率会稍低一些。
JIT(Just In Time):即时编译。
这是执行代码的另一种方式,JVM可以把java中的热点代码直接编译成计算机可以运行的代码,这样接下来再调用这个热点代码的时候,就可以直接使用编译好的代码让计算机直接运行,提高了运行效率。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值