Java学习 | 核心机制

一、垃圾收集机制

java垃圾回收JAVA特有功能,垃圾收集意味着程序不再需要的对象是"无用信息",这些信息将被丢弃回收。

垃圾收集的目的在除不再使用的对象,当对象建立的时候垃圾收集期,就开始监控对象的动态情况,垃圾收集主要是对内存的释放。创建对象的时候申请一个空间

    1.不再使用的内存空间应回收   →   垃圾收集;
    2.Java消除了程序员回收无用内存空间的职责;提供一种系统级线程跟踪存储空间的分配情况。在JVM的空闲时,检查并释放可被释放的存储器空间;相比c++,开发人员负责要自己收回无用内存。
    3.垃圾收集在Java程序运行过程中自动进行,程序员无法精确控制和干预;
    4.GC的自动回收,提高了内存空间的利用效率,也提高了编程人员的效率,很大程度上减少了因为没有释放空间而导致的内存泄露。

二、跨平台原理

Java跨平台原理

 C语言跨平台

 C跨平台和Java跨平台区别:

(1)Java的字节码文件是跟平台无关的,拿着这个字节码文件到不同的平台上运行

(2)C语言不同的平台有不同的编译器,编译器与平台相关的,编译后的可执行文件也是跟平台相关。

C语言到底是不是跨平台的?

实际上我们所说的跨平台指的是:编译后的文件是否跨平台→从这个角度来看,C语言不是跨平台的

而网上很多人说C语言是跨平台,因为不同平台有不同的解释器,它指的是源文件跨平台。

C语言的效率高,还是Java语言的效率高?

C语言的效率高,因为它产生的可执行文件可以直接在平台上去运行。

总结
JVM(Java Virtual Machine)就是一个虚拟的用于执行bytecode字节码的”虚拟计算机”。他也定义了指令集、寄存器集、结构栈、垃圾收集堆、内存区域。JVM负责将Java字节码解释运行,边解释边运行,这样,速度就会受到一定的影响。
不同的操作系统有不同的虚拟机。Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。 Java虚拟机是实现跨平台的核心机制。如图所示:

 我们说的语言跨平台是编译后的文件跨平台,而不是源程序跨平台。
接下来我们再比较下两种方式的差异:第一,C语言是编译执行的,编译器与平台相关,编译生成的可执行文件与平台相关;第二,Java是解释执行的,编译为中间码的编译器与平台无关,编译生成的中间码也与平台无关(一次编译,到处运行),中间码再由解释器解释执行,解释器是与平台相关的,也就是不同的平台需要不同的解释器.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值