jvm
文章平均质量分 97
duration~
努力学习吧~
展开
-
JAVA12
2019年3月19日,java12正式发布了,总共有8个新的JEP(JDK Enhancement Proposals)Features低暂停时间的GC http://openjdk.java.net/jeps/189微基准测试套件 http://openjdk.java.net/jeps/230switch表达式 http://openjdk.java.net/jeps/325JVM常量API http://openjdk.java.net/jeps/334。原创 2024-04-26 21:24:32 · 983 阅读 · 0 评论 -
JAVA11迭代更新
2018年9月26日,Oracle官方发布JAVA11,Oracle 表示会对 Java 11 提供大力支持,这一支持将会持续至 2026 年 9 月。这是JAVA大版本周期变化后的第一个长期支持版本。非常值得关注,最新发布的JAVA11将带来ZGC HttpClient等重要特性,一共17个需要我们关注的JEP,参考文档。181:基于嵌套的访问控制309:动态类文件常量315:改进Aarch64 Intrinsics318:Epsilon:一个无操作的垃圾收集器。原创 2024-04-25 22:48:57 · 572 阅读 · 0 评论 -
JAVA10迭代更新
2018年3月21日, Oracle官方宣布JAVA10正式发布JAVA9和java10 都不是 LTS (Long-Term-Support)版本.和过去的JAVA大版本升级不同,这两个只有半年左右的开发和维护时间. 而JAVA11 也是就是18.9,才是JAVA之后的第一个长期支持版本JAVA10 一共定义了109个新特性,其中包含JEP,对程序员来说,真正的新特性也就一个,还有一些新的API和JVM规范以及JAVA语言规范上的改动.原创 2024-04-25 21:40:09 · 824 阅读 · 0 评论 -
JAVA9迭代特性
经过4次推迟,历经曲折的Java9最终在2017年9月21日发布。因为里面加入的模块化系统,在最初设想的时候并没有想过那么复杂,花费的时间超出预估时间。距离java8大约三年时间。Java 9提供了超过150项新功能特性,包括备受期待的模块化系统、可交互的REPL工具: jshell, JDK编译工具,语法层面的改变:Java公共API和私有代码,以及安全增强、扩展提升、性能管理改善等。可以说Java 9是一个庞大的系统工程,完全做了一个整体改变。但是这个巨大改变的功劳,都给了java11了,原创 2024-04-24 21:31:58 · 729 阅读 · 0 评论 -
垃圾回收器
如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。虽然我们对各个收集器进行比较,但并非要挑选出一个最好的收集器。因为直到现在为止还没有最好的垃圾收集器出现,更加没有万能的垃圾收集器,我们能做的就是根据具体应用场景选择适合自己的垃圾收集器。试想一下:如果有一种四海之内、任何场景下都适用的完美收集器存在,那么我们的 HotSpot 虚拟机就不会实现那么多不同的垃圾收集器了。JDK 默认垃圾收集器(使用。原创 2024-04-19 23:25:16 · 1078 阅读 · 0 评论 -
J垃圾回收
在C/C++这类没有自动垃圾回收机制的语言中,一个对象如果不再使用,需要手动释放,否则就会出现内存泄漏。内存泄漏指的是不再使用的对象在系统中未被回收,内存泄漏的积累可能会导致内存溢出。为了让程序员更专注于代码的实现,而不用过多的考虑内存释放的问题,所以,在Java语言中,有了自动的垃圾回收机制,也就是我们熟悉的GC(Garbage Collection)。有了垃圾回收机制后,程序员只需要关心内存的申请即可,内存的释放由系统自动识别完成,垃圾回收器主要负责对堆上的内存进行回收。在进行垃圾回收时,不同的对象引用原创 2024-04-15 18:48:38 · 612 阅读 · 0 评论 -
JAVA内存区域
其中就包含了类的字段、方法等字节码文件中的内容,同时还保存了运行过程中需要使用的虚方法表(实现多态的基础)等信息。所以s2.intern指向的是字符串常量池中的对象,而s2指向的是堆中的对象。一直执行到方法的最后一行指令,此时方法执行return语句,当前方法执行结束,程序计数器中会放入方法出口的地址(栈中讲解,简单来说就是这个B方法结束了,A调用了B,那么要回到A方法)used指的是当前已使用的堆内存,total是java虚拟机已经分配的可用堆内存,max是java虚拟机可以分配的最大堆内存。原创 2024-04-14 10:48:14 · 823 阅读 · 0 评论 -
类加载器
类加载器(ClassLoader)是Java虚拟机提供给应用程序去实现获取类和接口字节码数据的技术,类加载器只参与加载过程中的字节码获取并加载到内存这一部分。类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远超类加载阶段。对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。这句话可以表达得更通俗一些:比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载的前提下才有意义,否则,即使这两个类来原创 2024-04-13 20:46:12 · 917 阅读 · 0 评论 -
类的生命周期
clini>()方法对于类或接口来说并不是必需的,如果一个类中没有静态语句块,也没有对变量的赋值操作,那么编译器可以不为这个类生成()方法。接口中不能使用静态语句块,但仍然有变量初始化的赋值操作,因此接口与类一样都会生成()方法。但接口与类不同的是,执行接口的()方法不需要先执行父接口的()方法,因为只有当父接口中定义的变量被使用时,父接口才会被初始化。此外,接口的实现类在初始化时也一样不会执行接口的()方法。原创 2024-04-13 19:33:39 · 1171 阅读 · 0 评论 -
字节码文件的组成
比如在代码中,编写了两个相同的字符串“我爱北京天安门”,字节码文件甚至将来在内存中使用时其实只需要保存一份,此时就可以将这个字符串以及字符串里边包含的字面量,放入常量池中以达到节省空间的作用。jad命令可以将类的字节码文件进行反编译成源代码,用于确认服务器上的字节码文件是否是最新的,如下将demo.MathGame的源代码进行了显示。javap是JDK自带的反编译工具,可以通过控制台查看字节码文件的内容。字节码中的方法区域是存放字节码指令的核心位置,字节码指令的内容存放在方法的Code属性中。原创 2024-04-13 17:09:35 · 786 阅读 · 0 评论