【JAVA】Java两种核心机制

Java的两种核心机制是:

1.Java 虚拟机

什么是java虚拟机?
Java 虚拟机(JVM)是可运行Java 代码的假象计算机,是Java 语言的运行环境,Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。
java 虚拟机体系结构图:
这里写图片描述

Java 程序执行流程

Java程序的执行依赖于编译环境和运行环境,流程为:.Java先编译成.class 文件,然后生成在Java虚拟机上运行的目标代码,java虚拟机可以支持不同的平台,但是有同一的接口。对于不同的系统可以使用同一个虚拟机。

这里写图片描述

Java技术的核心就是Java虚拟机,因为所有的Java程序都在虚拟机上运行。Java程序的运行需要Java虚拟机、Java API和Java Class文件的配合。Java虚拟机实例负责运行一个Java程序。当启动一个Java程序时,一个虚拟机实例就诞生了。当程序结束,这个虚拟机实例也就消亡。

Java 虚拟机
Java虚拟机的主要任务是装载class文件并且执行其中的字节码。由下图可以看出,Java虚拟机包含一个类装载器(class loader),它可以从程序和API中装载class文件,Java API中只有程序执行时需要的类才会被装载,字节码由执行引擎来执行。
 
这里写图片描述

Java虚拟机在执行字节码时还进行其它的一些内置的安全机制的操作,他们作为Java编程语言保证Java程序健壮性的特性,同时也是Java虚拟机的特性:
类型安全的引用转换
结构化的内存访问
自动垃圾收集
数组边界检查
空引用检查

为何要用java虚拟机?
一次编译,到处执行:Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。
对于不同的平台,有不同的虚拟机,但是有统一的接口。

2.垃圾收集机制

在c/c++语言中,由程序员负责回收无用内存,释放内存是手动处理,要用delete 运算符来释放内存,对编码者来说,这样是很难做到的,在Java中自动完成,垃圾回收机制放在JVM里,JVM完全负责垃圾回收事宜。消除了程序员回收无用内存空间的责任:他提供了一种系统级存储空间的分配情况,并在JVM空闲时,检查并释放那些可被释放的内存。

对象在啥时候被丢弃?
当我们新建一个对象时如:

Cat c=new Cat();

首先会在栈内存分配空间c,在堆内存分配空间存放Cat 对象,栈内存的c会指向堆内存的Cat 对象,但是如果没有指向这个对象的指针时,说明这个对象的存在没有必要了,那么,这个对象就可以被JVM会自动回收了,这就是说,当不存在某个对象的任何引用时,就会告诉JVM,我不需要这个对象了,你可以回收了,JVM的垃圾回收机制对堆空间做实时监测,当发现某对象的引用计数为0时,就将该对象列入待回收列表中,但是并不是马上予以销毁。那什么时候回收呢?

什么时候回收?
JVM 的垃圾回收机制有多个算法,垃圾回收需要占用时间,因此,JVM的垃圾回收机制要在时间和空间之间做平衡,java 运行时系统知识在需要的时候才回收。

总结:

Java虚拟机使得java程序一次编译,导出执行,所以Java 支持平台无关性,安全性和网络移动性,同时Java 的垃圾自动回收机制使得编程者不用关心到底什么时候清理内存,可以很好地利用内存空间。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

诗琪小姐姐

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

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

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

打赏作者

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

抵扣说明:

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

余额充值