您的位置:首页 > 汽车 > 时评 > 晶鹰建设摩托车官网_海南旅游网页设计_做好的网站怎么优化_软媒win7优化大师

晶鹰建设摩托车官网_海南旅游网页设计_做好的网站怎么优化_软媒win7优化大师

2024/12/29 10:07:30 来源:https://blog.csdn.net/2301_78926186/article/details/144773175  浏览:    关键词:晶鹰建设摩托车官网_海南旅游网页设计_做好的网站怎么优化_软媒win7优化大师
晶鹰建设摩托车官网_海南旅游网页设计_做好的网站怎么优化_软媒win7优化大师

一、什么是JDK

         JDK(Java Development Kit)即 Java 开发工具包,是 Java 编程的基础与核心,由 Sun Microsystems(现归属于 Oracle 公司 )开发,主要作用如下:

1、提供编译环境

        它包含了javac这一编译器,能把 Java 程序员写好的以.java为后缀的源文件,编译成 Java 虚拟机(JVM)可识别并执行的字节码文件(.class) 。例如,开发一个简单的 “Hello World” 程序,编写完HelloWorld.java源码后,就需借助javac将其转换为字节码。

2、配备运行环境

       JDK 整合了 Java 运行时的基础环境 JRE(Java Runtime Environment),JRE 里有 Java 虚拟机、Java 核心类库等,这保障了编译好的 Java 程序能顺利运行起来,无论该程序是一个桌面应用、Web 应用,还是移动端的安卓应用底层部分。

3、开发工具

      JDK 还带有一系列实用开发工具,像是java命令,用于执行字节码文件;jar工具,可将相关的类文件打包成一个.jar归档文件,方便程序分发与复用;javadoc能依据 Java 代码里的注释,自动生成规范的 API 文档 。

4、丰富类库支持

      JDK 内置海量的类库,这些类覆盖了从基础数据结构操作、文件读写、网络通信,到图形界面绘制、数据库连接等多方面的功能,程序员开发时只需引入对应的类,调用相关方法,就能快速搭建起应用的各项功能,极大减少了开发成本与周期。

二、JVM的内存结构

1、 程序计数器

(1)作用

       它是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。在多线程环境下,由于线程会频繁切换,程序计数器用于记录每个线程当前执行到的位置,以便线程切换回来时能精准恢复执行。

(2)特点

      线程私有的内存区域,生命周期与线程相同。此区域不会发生内存溢出(OutOfMemoryError ,简称 OOM)情况。

2、虚拟机栈

(1)作用

      用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每当一个方法被调用时,就会在虚拟机栈中创建一个对应的栈帧,方法执行完毕,栈帧出栈。

(2)特点

     也是线程私有的,它的大小可以通过参数-Xss来设定。如果线程请求的栈深度大于虚拟机所允许的深度,就会抛出StackOverflowError;若虚拟机栈无法申请到足够内存来扩展,会抛出OutOfMemoryError

3、本地方法栈

(1)作用

      与虚拟机栈类似,不过它是为虚拟机使用到的 Native 方法服务,也就是那些用非 Java 语言(如 C、C++ )编写并通过 JNI(Java Native Interface)调用的方法。

(2)特点

     线程私有的内存区域,同样可能出现StackOverflowErrorOutOfMemoryError异常。

4、堆

(1)作用

     堆是 JVM 所管理的最大的一块内存区域,几乎所有的对象实例和数组都在堆上分配内存。这也是 Java 垃圾回收器(GC)重点关注和管理的区域。

(2)特点

     它是线程共享的,堆的大小可以通过参数-Xmx(最大堆容量)和-Xms(初始堆容量)来调整。由于对象不断创建,当堆内存无法满足新对象的分配需求时,就会抛出OutOfMemoryError

5、方法区

(1)作用

用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

(2)特点

        它是线程共享的,在 Java 8 之前,方法区由永久代(PermGen)实现,容易出现内存溢出;Java 8 之后,使用元空间(Metaspace)替代了永久代,元空间直接使用本地内存,理论上受限于本地机器的内存大小,减少了因永久代设置不当引发的 OOM 风险。

三、JDK8的新特性

1、Lambda表达式,允许把函数当作参数传递进方法,替代传统匿名内部类的复杂语法。

2、Stream API,提供了一种声明式处理集合数据的方式,代码简洁且高效。能对集合进行过滤、映射、排序、归并等操作。

3、接口的默认方法,打破传统接口只能有抽象方法的限制,接口可以有默认实现的方法。当接口升级添加新方法时,已实现该接口的类无需全部修改,只要新方法定义成默认方法就行。

4、静态接口方法,直接属于接口,不能被实现类重写,为接口提供了更多工具性的功能整合。

5、新的日期和时间API,摒弃了DateCalendar类,他们式线程不安全的。新引入LocalDate(表示日期)、LocalTime(表示时间)、LocalDateTime(表示日期时间)等类,使用起来更加直观、便捷。

6、Optionnal 类,用来解决空指针问题,它包装一个对象,通过一系列方法判断对象是否存在,存在则获取值,不存在则优雅返回默认值,避免了繁琐的if - null判断。

7、Base64编码的支持,提供了便捷的 Base64 编码与解码工具,可用于处理文本、二进制数据的编码转换,有标准、URL 安全、MIME 兼容等多种编码模式。

四、java垃圾回收(GC)机制

1、引用技术法

    就是给每个对象添加一个引用计数器,每当有一个新的引用指向该对象时,计数器加 1,当引用断开时,计数器减 1,一旦计数器归零,就意味着该对象没有任何引用,可以标记为垃圾;不过 Java 虚拟机并没有采用这种算法,因为它难以解决对象间循环引用的问题。

2、可达性分析

      以根对象为起始点,沿着对象之间的引用关系,层层遍历,构建出一个引用关系图。所有能从根对象通过引用链触达的对象,都被判定为存活对象,会被标记下来;而那些无法通过引用链关联到根对象的对象,就会被认定是可回收的垃圾对象。例如,在一个简单的 Java 类实例关系中,若类 A 的对象 a 被某个根对象引用,类 A 里有个成员变量指向类 B 的对象 b,那么对象 a 和 b 通过这条引用链都属于可达对象;反之,若某个对象切断了和所有根对象的引用关系,即使它内部还有自身循环引用,依然会被标记成垃圾。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com