垃圾收集机制

不再使用的内存空间应回收,即垃圾收集。

Java消除了程序员回收无用内存空间的职责,提供一种系统级线程跟踪存储空间的分配情况。在JVM空闲时,检查并释放可被释放的存储器空间;而在C++中,开发人员要负责自己回收无用内存。

垃圾收集在Java程序运行过程中自动进行,程序员无法精确控制和干预。

GC(垃圾收集器)的自动回收,提高了内存空间的利用效率,也提高了编程人员的效率,很大程度上减少了因为没有释放空间而导致的内存泄露。

跨平台原理

Java跨平台原理

JavaSE-01-1

在执行的时候,表面上我们调用的是java.exe,实际上在调用java.exe(包含了启动JVM所需的代码和参数)的时候,它会动态地加载JVM,所以真正起到执行作用的是JVM。JVM将字节码文件一行行解释成当前操作系统认识的可执行文件的格式,这也是为什么Java是一个“解释性”的语言。

C语言跨平台原理

JavaSE-01-2

二者区别

  • Java的字节码文件是跟平台无关的,可以拿着这个字节码文件到不同的平台上去运行
  • 对C语言而言,不同的平台有不同的编译器,编译器与平台相关,编译后的可执行文件也是与平台相关的

C语言是不是跨平台的?

实际上我们所说的跨平台指的是编译后的文件是否跨平台。从这个角度看,C语言并不是跨平台的。但是网上很多人说C语言是跨平台的,是因为不同平台有不同的解释器,指的是源文件跨平台。

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

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