jvm基础知识 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

jvm基础知识

发表时间:2020-10-19

发布人:葵宇科技

浏览次数:62

JVM基础知识

    • 1. 常见编程语言类型
    • 高级语言分类
    • 2. 跨平台
    • 3. 运行时(Runtime)与虚拟机(VM)
    • 4. 内存管理和垃圾回收(GC)

1. 常见编程语言类型

从底向上划分为最基本的三大类:机器语言、汇编 语言、高级语言。

  • 机器语言:直接给计算机执行的语言,这种语言主要是利用二进制编码进行指令发送,也就是二进制内容形式的文件
  • 汇编语言:主要是以缩写英文作为标符进行编写的,介于高级语言与集器语言之间
  • 高级语言:以更人性化的方式形式进行编码,代码编写完成后通过编译或解释,转换成汇编 码或机器码,之后再传递给计算机去执行。

高级语言分类

有无虚拟机

  1. 有虚拟机:Java,Lua,Ruby,部分JavaScript的实现等等
  2. 无虚拟机:C,C++,C#,Golang,以及大部分常见的编程语言

变量是不是有确定的类型

  1. 静态类型:Java,C,C++等等
  2. 动态类型:所有脚本类型的语言

是编译执行,还是解释执行

  1. 编译执行:C,C++,Golang,Rust,C#,Java,Scala,Clojure,Kotlin, Swift…等等
  2. 解释执行:JavaScript的部分实现和NodeJS,Python,Perl,Ruby…等等

语言特点

  1. 面向过程:C,Basic,Pascal,Fortran等等
  2. 面向对象:C++,Java,Ruby,Smalltalk等等
  3. 函数式编程:LISP、Haskell、Erlang、OCaml、Clojure、F#等等

2. 跨平台

一般来说解释型语言都是跨平台的,同一份脚本代码,可以由不同平台上 的解释器解释执行。但是对于编译型语言,存在两种级别的跨平台: 源码跨平台和二 进制跨平台。
1、典型的源码跨平台(C++):
在这里插入图片描述
C++里需要把一份源码,在不同平台上分别编译,生成这个平台相关的二进制可执行文件,然后才能在相应的平台上运行。 这样就需要在各个平台都有开发工具和编译器,而且在各个平台所依赖的开发库都需要是一致或兼容的。
2、典型的二进制跨平台(Java字节码):
在这里插入图片描述
java只要将代码编译称字节码文件,然后再不同平台安装虚拟机,就可以实现跨平台了,

  • 脚本语言直接使用不同平台的解释器执行,称之为脚本跨平台,平台间的差异由不同平台上的解释器去解决。
  • 编译型语言的代码跨平台,同一份代码,需要被不同平台的编译器编译成相应的二进制文件,然后再去分发和执行,不同平台间的差异由编译器去解决。
  • 编译型语言的二进制跨平台,同一份代码,先编译成一份通用的二进制文件,然后分发到不同平台,由虚拟机运行时来加载和执行。

3. 运行时(Runtime)与虚拟机(VM)

Java运行时 和 JVM虚拟机 ,简单的说JRE就是Java的运行
时,包括虚拟机和相关的库等资源。
运行时提供了程序运行的基本环境,JVM在启动时需要加载所有运行时的核心库等资源,然后再加载我们的应用程序字节码,才能让应用程序字节码运行在JVM这个容器里。

4. 内存管理和垃圾回收(GC)

内存资源总是有 限而又宝贵的,只占用不释放,很快就会用完了。程序得不到可用内存就会崩溃。

内存管理就是内存的生命周期管理,包括内存的申请、压缩、回收等操作。

Java的内存管理就是GC,JVM的GC模块不仅管理内存的回收,也负责内存的分配和 压缩整理

  1. C/C++完全相信而且惯着程序员,让大家自行管理内存,所以可以编写很自由的 代码,但一个不小心就会造成内存泄漏等问题导致程序崩溃。
  2. Java/Golang完全不相信程序员,但也惯着程序员。所有的内存生命周期都由 JVM/运行时统一管理。 在绝大部分场景下,你可以非常自由的写代码,而且不 用关心内存到底是什么情况。 内存使用有问题的时候,我们可以通过JVM来信息 相关的分析诊断和调整。
  3. Rust语言选择既不相信程序员,也不惯着程序员。 让你在写代码的时候,必须清 楚明白的用Rust的规则管理好你的变量,好让机器能明白高效地分析和管理内 存。 但是这样会导致代码不利于人的理解,写代码很不自由,学习成本也很高。

相关案例查看更多