【2023,学点儿新Java-10】Java17 API文档简介&获取 |详解Java核心机制:JVM |详解Java内存泄漏与溢出 |Java优缺点总结 |附:GPT3.5-turbo问答测试

前情回顾:

  • 【2023,学点儿新Java-09】Java初学者常会犯的错误总结与解决方案 | Java中的注释类型 | 详细教学:通过命令行 执行 Java中特有的文档注释
  • 【2023,学点儿新Java-08】HelloWorld.java案例小结 | EditPlus中的Java文件说明 | EditPlus 简介 | 详细分析:Java程序的编写、编译和运行过程
  • 【2023,学点儿新Java-07】第一个Java程序——HelloWorld | Java程序开发步骤 | 解决 打印中文数据乱码情况 | 常用的Java开发工具
  • 更多Java系列文章,可参阅博主主页哦!

 

在大多数领域,
与决心相比,
天赋被高估了。
 
时间长了,
决心就是你的天赋。

 

作者主页: 追光者♂

        

个人简介:
 
[1] 计算机专业硕士研究生
 
[2] 2022年度博客之星人工智能领域TOP4
 
[3] 阿里云社区特邀专家博主
 
[4] CSDN-人工智能领域优质创作者
 
[5] 预期2023年10月份 · 准CSDN博客专家  
 

  • 无限进步,一起追光!!!

        

感谢大家 点赞  收藏⭐   留言!!!

        

本文,针对Java API文档进行了简要的介绍说明并给出了目前来讲较为标准地中文档jdk 1.6 中文文档。随后详细介绍了Java核心机制——JVM,具体地结合JVM两个强大的功能来介绍,并针对热门的Java面试题——Java内存泄漏与内存溢出 给出了专业且详尽的解释。此外简单总结了Java编程语言的优缺点。最后初步通过一道问答题验证了一下GPT3.5。文章书写与整体分析不易,求关注!求个点赞呀!持续分享更多干货知识!

本文目录

  • 一、Java API 文档 (简介)
    • 1.1 什么是 API
    • 1.2 Java API(获取)
  • 二、Java核心机制——JVM 介绍
    • 2.1 何为 JVM
    • 2.2 JVM 功能介绍
      • 2.2.1 功能1:实现Java程序的跨平台性
      • 2.2.2 功能2:自动内存管理(内存分配、内存回收)
      • 2.2.3 附:来看一道Java面试题——Java内存溢出和内存泄漏
        • 2.2.3.1 内存溢出
        • 2.2.3.2 内存泄漏
        • 2.2.3.3 为什么说 内存泄漏多了 会导致 内存溢出?
        • 2.2.3.4 举一些内存泄漏的例子
    • 2.3 附:Java优缺点总结
      • 2.3.1 优点
      • 2.3.2 缺点
  • 三、GPT3.5 简单问答测试

一、Java API 文档 (简介)

1.1 什么是 API

API(Application Programming Interface,应用程序接口)是一种 软件接口,它允许不同的应用程序之间进行交互、访问或共享数据、服务和功能。

API是一组定义、协议和工具,用于构建应用程序和软件组件,以简化应用程序开发和提高开发效率。

它提供了一种标准化的方式 来访问数据和进行各种操作,使得不同的系统之间 可以相互通信,并且 可以轻松地实现数据流、应用程序集成、自动化流程和服务的开发。

常见的API类型包括Web API(基于Web的API)、桌面应用程序API、操作系统API、库API和设备驱动程序API等。

 

1.2 Java API(获取)

    1. API 是 Java 提供的基本编程接口。
    1. Java语言 提供了大量的基础类,因此 Oracle 也为这些基础类提供了相应的说明文档,用于告诉开发者如何使用这些类,以及这些类里包含的方法。大多数Java书籍中的类的介绍都要参照它来完成,它是编程者经常查阅的资料。
    1. Java API文档,即为JDK使用说明书、帮助文档。我们可理解为:“字典”,不明白的东西,可以去里面检索。
      【2023,学点儿新Java-10】Java17 API文档简介&获取 |详解Java核心机制:JVM |详解Java内存泄漏与溢出 |Java优缺点总结 |附:GPT3.5-turbo问答测试_第1张图片
       

Java API 文档获取:

    1. Java17 API文档 在线阅读

【2023,学点儿新Java-10】Java17 API文档简介&获取 |详解Java核心机制:JVM |详解Java内存泄漏与溢出 |Java优缺点总结 |附:GPT3.5-turbo问答测试_第2张图片

    1. 下载后阅读

【2023,学点儿新Java-10】Java17 API文档简介&获取 |详解Java核心机制:JVM |详解Java内存泄漏与溢出 |Java优缺点总结 |附:GPT3.5-turbo问答测试_第3张图片

以上均是英文版的。
 

目前来讲,jdk1.6 的中文API文档 翻译的是比较好的,在Java基础阶段学习的大部分API 基本上 与jdk17相比较 变换不大,基本可以与官网的相对应。

具体地,可以 点我下载jdk1.6 API 中文版

 

二、Java核心机制——JVM 介绍

2.1 何为 JVM

此前,我们曾介绍过JVM:目录1.1.3——JVM。

这里再简单说一下。

JVM是Java虚拟机(Java Virtual Machine)的简称,它是Java语言平台的核心组成部分。

它的主要作用 就是将Java代码 翻译成特定计算机硬件指令,实现跨平台执行,也就是说,一个Java程序可以在任何安装有Java虚拟机的系统上运行

这种机制 能够实现Java语言的“一次编写,到处运行”的特性,避免了 在每种不同的计算机平台上单独编译程序的繁琐工作。

简言之,JVM相当于一个虚拟计算机,它提供了Java运行的环境和支持,使得Java程序能够在不同的操作系统和硬件上运行。

 

2.2 JVM 功能介绍

JVM(Java Virtual Machine ,Java虚拟机):是一个虚拟的计算机,是Java程序的运行环境。JVM具有指令集并使用不同的存储区域,负责执行指令,管理数据、内存、寄存器。

【2023,学点儿新Java-10】Java17 API文档简介&获取 |详解Java核心机制:JVM |详解Java内存泄漏与溢出 |Java优缺点总结 |附:GPT3.5-turbo问答测试_第4张图片

下面介绍一下JVM具有的两个强大功能。

2.2.1 功能1:实现Java程序的跨平台性

我们编写的Java代码,都运行在JVM 之上。正是因为有了JVM,才使得Java程序具备了跨平台性。

【2023,学点儿新Java-10】Java17 API文档简介&获取 |详解Java核心机制:JVM |详解Java内存泄漏与溢出 |Java优缺点总结 |附:GPT3.5-turbo问答测试_第5张图片

这里可以看一下,使用JVM前后的对比:
【2023,学点儿新Java-10】Java17 API文档简介&获取 |详解Java核心机制:JVM |详解Java内存泄漏与溢出 |Java优缺点总结 |附:GPT3.5-turbo问答测试_第6张图片

2.2.2 功能2:自动内存管理(内存分配、内存回收)

自动内存管理,此处体现为两个方面,其一是内存自动分配,其二是内存自动回收

    1. Java程序在运行过程中,涉及到运算的数据的分配存储等都由JVM来完成
    1. Java 消除了 程序员回收无用内存空间的职责。提供了 一种系统级线程 跟踪存储空间的分配情况,在内存空间 达到相应阈值时,检查 并释放可被释放的存储器空间。
    1. GC的自动回收,提高了 内存空间的利用效率,也提高了编程人员的效率,很大程度上减少了因为没有释放空间而导致的内存泄漏

2.2.3 附:来看一道Java面试题——Java内存溢出和内存泄漏

 
问题:Java程序 会出现内存溢出和内存泄漏问题吗?

                                            ——答案是: Yes!

2.2.3.1 内存溢出

Java程序同样也会存在内存溢出和内存泄漏问题

内存溢出是指Java程序在申请内存时,JVM对内存分配的控制不足造成的,当程序需要的内存 超出了JVM的分配能力时 会抛出OutofMemoryError异常,导致程序崩溃,这种问题通常是由于程序中存在大量的对象,而这些对象 无法被垃圾回收机制正确回收释放造成的。

2.2.3.2 内存泄漏

内存泄漏是指程序中的对象或变量 一直保持着对内存的占用,无法被垃圾回收机制正确释放 导致内存逐渐被耗尽。这种问题 通常是由于程序中存在一些组件 或类的初始化和释放不当,或者存在一些循环引用等问题。

为了避免内存溢出和内存泄漏等问题,可以尝试使用Java内置工具或一些第三方工具如Eclipse内存分析工具(MAT),JProfiler等进行内存分析和监控,以及规范开发过程,正确使用和释放对象等。

2.2.3.3 为什么说 内存泄漏多了 会导致 内存溢出?

 

内存泄漏和内存溢出 都是关于内存申请与释放的问题。在Java程序中,内存泄漏 是指程序中的对象或变量一直被占用,无法被垃圾回收机制释放,导致内存逐渐被占满的问题。而内存溢出 则是指Java堆内存不够用,无法为新的对象分配内存,导致OutOfMemoryError异常的问题。

 

具体来说,内存泄漏发生时,对象占用的内存 没有得到及时的释放,导致Java堆中存储的对象越来越多,而堆的大小是有限的。随着内存泄漏的持续发生,Java堆内的可用内存将逐渐减少,直到 无法为新的对象分配足够的内存。当Java堆的内存不足时,就会发生内存溢出。

 

因此,内存泄漏和内存溢出 是两个密切相关的问题。内存泄漏多了 会导致内存堆中对象越来越多,逐渐逼近堆的极限,最终导致 内存溢出。因此,及时解决内存泄漏问题,及时释放不再使用的对象,是Java程序中保持堆内存可用的重要途径。

 

2.2.3.4 举一些内存泄漏的例子

 
Java中常见的内存泄漏问题:

  1. 静态集合类:如果在应用中 声明并操作了一个静态的集合类,但没有 正确管理该集合中的对象的引用,则可以造成内存泄漏。

  2. 垃圾回收器引用:如果垃圾回收期被明确地保留在应用程序中(例如,被保存为静态成员变量),则可能会导致内存泄漏。

  3. 内部类引用外部类:当一个匿名内部类被创建时,它通常会包含对外部类的引用,如果这个匿名类没有正确地释放,则会导致外部类的内存泄漏。

  4. 大量的字符串:在Java中,字符串是不可变的,当程序的运行需要大量的字符串时,除非使用String intern()方法,否则可能造成内存泄漏。

  5. 过度的同步:在多线程的应用程序中,如果在同步代码块中,使用的锁范围太大,可能会造成内存泄漏,因为锁的范围太大时,被锁定的对象不能被及时释放。

  6. 不正确的资源关闭:如果程序没有正确地关闭使用的资源(如文件、数据库连接等),就可能导致内存泄漏。

以上这些 是Java中比较常见的内存泄漏问题,开发者们应该注意及时修复这些内存泄漏问题,以避免内存溢出等内存相关的问题。

2.3 附:Java优缺点总结

众所周知,Java的确 从C语言和C++语言继承了许多成份,甚至可以将Java看成是 类C语言发展和衍生的产物。所谓——“青出于蓝,而胜于蓝”。

2.3.1 优点

  • 跨平台性: 这是Java的核心优势。Java在最初设计时 就很注重移植和跨平台性。比如:Java的int永远都是32位。不像C++可能是16,32,可能是 根据编译器厂商规定的变化。
  • 通过Java语言 编写的应用程序 在不同的系统平台上都可以运行。即 “Write once , Run Anywhere”。
  • 原理:只要在需要运行 java 应用程序的操作系统上,先安装一个Java虚拟机 (JVM ,Java Virtual Machine) 即可。由JVM来负责Java程序在该系统中的运行。

针对不同的操作系统,java(开发)的架构是不会变化的。 因为 Java是一种跨平台的编程语言,它的设计初衷 就是可在不同操作系统、计算机架构和硬件平台上运行。因此,Java的架构 不会因为操作系统的不同而有所变化。Java的跨平台实现 主要是通过 Java虚拟机(JVM)字节码来实现的。

【2023,学点儿新Java-10】Java17 API文档简介&获取 |详解Java核心机制:JVM |详解Java内存泄漏与溢出 |Java优缺点总结 |附:GPT3.5-turbo问答测试_第7张图片

Java虚拟机 提供了一个标准的接口,它将Java字节码 转换为本地机器语言,使得Java程序 可以在任何操作系统上运行。虚拟机 负责提供Java API的实现,同时在应用程序和操作系统之间提供了一个中间层。

由于Java字节码 是独立于操作系统的,所以 Java源码 只需要编写一次 并编译成字节码 即可在任意操作系统上运行。 因此,Java的架构在各个操作系统平台上基本相同,只需在每个平台上安装适当版本的JVM,即可运行Java程序。
【2023,学点儿新Java-10】Java17 API文档简介&获取 |详解Java核心机制:JVM |详解Java内存泄漏与溢出 |Java优缺点总结 |附:GPT3.5-turbo问答测试_第8张图片
 

各个操作系统上的JVM是不一样的,而JVM又是包含于jdk之中的,因此各个系统的jdk自然也是不一样的。故而安装jdk的时候,要根据具体的操作系统 来安装与之相匹配的jdk。

【2023,学点儿新Java-10】Java17 API文档简介&获取 |详解Java核心机制:JVM |详解Java内存泄漏与溢出 |Java优缺点总结 |附:GPT3.5-turbo问答测试_第9张图片
 

此外,Java还具有如下特性(包括 但不限于下述)

  • 1. 面向对象性:

    面向对象是一种程序设计技术,非常适合大型软件的设计和开发。面向对象编程 支持封装、继承、多态等特性,让程序更好达到高内聚低耦合的标准。

  • 2. 健壮性: Java 吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制

  • 3. 安全性高:

    Java 适合于网络/分布式环境,需要提供一个安全机制以防恶意代码的攻击。如:安全防范机制(ClassLoader 类加载器),可以分配 不同的命名空间 以防替代本地的同名类、字节代码检查。

  • 4. 简单性:

    Java就是C++语法的简化版,我们也可以 将Java称之为“C++--”。比如:头文件,指针运算,结构,联合,操作符重载,虚基类等。

  • 5. 高性能:

    • Java最初发展阶段,总是被人诟病“性能低”;客观上讲,高级语言 运行效率总是低于低级语言的,这个无法避免。Java语言本身发展中 通过虚拟机的优化提升了几十倍运行效率。比如,通过JIT(JUST IN TIME)即时编译技术提高运行效率。

    • Java低性能的短腿,已经被完全解决了。业界发展上,我们也看到很多C++应用开发 转到Java开发,很多C++程序员转型为Java程序员。

2.3.2 缺点

    1. 语法过于复杂、严谨,对程序员的约束比较多,与python、php等相比 入门较难。但是一旦学会了,就业岗位需求量大,而且薪资待遇节节攀升
    1. 一般适用于 大型网站开发,整个架构会比较重,对于初创公司开发和维护人员的成本比较高(即薪资高),选择用Java语言开发网站或应用系统 需要一定的经济实力。
    1. 并非适用于所有领域。比如,Objective C、Swift在iOS设备上 就有着无可取代的地位。浏览器中的处理 几乎完全由JavaScript掌控。Windows程序 通常都用C++或C#编写。Java在服务器端编程跨平台客户端应用领域则很有优势。

 

 

而如果让你带着批评的观点,来看待 java都有哪些缺点,你可能会这么说:

  1. 性能较差:一些开发人员和专家认为,相比较其它编程语言(如C、C++等),Java在性能方面存在对比弱点,因为 Java是一种解释型语言,每次运行 都需要将代码翻译成字节码,因此 性能有时会受到影响

  2. 资源占用较大:在运行Java程序时,JVM 需要消耗比较多的内存,这可能 会在一些较小的系统上 造成性能问题或资源不足的情况。

  3. 过渡依赖于第三方库:Java 拥有广泛的第三方库和框架,但有时候,过渡地 依赖这些库 会导致代码臃肿和混乱,增加开发和维护程序的难度。

  4. 代码复杂度高:Java要求程序员写出正确、严谨的代码,这通常会导致较高的代码复杂度和学习曲线。

不过我认为,与Java的缺点比起来,它的优点还是更加友好的。

 

 

三、GPT3.5 简单问答测试

问:目前最热门的深度学习模型是什么?

它的回答如下图所示:

【2023,学点儿新Java-10】Java17 API文档简介&获取 |详解Java核心机制:JVM |详解Java内存泄漏与溢出 |Java优缺点总结 |附:GPT3.5-turbo问答测试_第10张图片

不知,各位觉得怎样?
 

 

持续更新 ing!

 

喜欢的话,就点个赞!关注我吧!

 


 

热门专栏推荐

  • Python&AI专栏:【Python从入门到人工智能】
  • 前端专栏:【前端之梦~代码之美(H5+CSS3+JS.】
  • 文献精读&项目专栏:【小小的项目 (实战+案例)】
  • C语言/C++专栏:【C语言、C++ 百宝书】(实例+解析)
  • 问题解决专栏:【工具、技巧、解决办法】
  • 加入Community 一起追光:追光者♂社区

 

持续创作优质好文ing…✍✍✍

 

记得一键三连哦!!!

 

求关注!求点赞!求个收藏啦!

在这里插入图片描述

你可能感兴趣的:(备战2023博客之⭐_Java,Java系列文章,Java教程,JVM,Java优缺点和特点,Java面试题,Java内存泄漏与溢出,GPT-3.5)