jdk
-
JDK 源码阅读 Reference
原文出处: 木杉的博客 Java最初只有普通的强引用,只有对象存在引用,则对象就不会被回收,即使内存不足,也是如此,JVM会爆出OOME,也不会去回收存在引用的对象。 如果只提供强 引用,我们就很难写出“这个对象不是很重要,如果内存不足GC回收掉也是可以的”这种语义的代码。Java在1.2版本中完善了引用体系,提供了4中引用类型:强引用 ,软引用,弱引用,虚引用。使用这些引用类 …阅读全文
-
JDK 源码阅读 : DirectByteBuffer
原文出处: 木杉的博客 在文章 JDK源码阅读-ByteBuffer 中,我们学习了ByteBuffer的设计。但是他是一个抽象类,真正的实现分为两类: [代码片段] 与 [代码片段] 。 [代码片段] 是堆内ByteBuffer,使用 [代码片段] 存储数据,是对数组的封装,比较简单。 [代码片段] 是堆外ByteBuffer,直接使用堆外内存 …阅读全文 -
JDK源码阅读:ByteBuffer
原文出处: 木杉的博客 Buffer是Java NIO中对于缓冲区的封装。在Java BIO中,所有的读写API,都是直接使用byte数组作为缓冲区的,简单直接。但是在Java NIO中,缓冲区这一概念变得复杂,可能是对应Java堆中的一块内 存,也可能是对应本地内存中的一块内存。而byte数组只能用来指定Java堆中的一块内存,所以Java NIO中设计了一个新的缓冲区抽象,涵盖 …阅读全文 -
JDK源码阅读:InterruptibleChannel与可中断IO
原文出处: 木杉的博客 Java传统IO是不支持中断的,所以如果代码在read/write等操作阻塞的话,是无法被中断的。这就无法和Thead的interr upt模型配合使用了。JavaNIO众多的升级点中就包含了IO操作对中断的支持。InterruptiableChannel表示支持中断的Channel。我们 常用的FileChannel,SocketChannel,Datagr …阅读全文
-
JDK 11 已处于特性冻结状态,看看 Java 11 API 变更提案
原文出处: 局长 自从上个月进入“减速(ramp-down)”阶段以来,JDK 11 的特性已经处于冻结状态。这些重大的变化已被列为 JEP(JDK Enhancement Proposal 特性增强提议)。此外,JDK 11 中也有很多除 JEP 之外的变化,但官方尚未总结。因此,本文将列出我所知道的 JDK 11 中的 API 变更。 String lines() …阅读全文 -
JDK 源码阅读 : FileDescriptor
原文出处: 木杉的博客 操作系统使用文件描述符来指代一个打开的文件,对文件的读写操作,都需要文件描述符作为参数。Java虽然在设计上使用了抽象程度更高的流来 作为文件操作的模型,但是底层依然要使用文件描述符与操作系统交互,而Java世界里文件描述符的对应类就是FileDescriptor。 Java文件操作的三个类: [代码片段] , [代码片段] , [代码片段] …阅读全文 -
Jdk动态代理异常处理分析,UndeclaredThrowableException
原文出处: hebaodan 背景 在RPC接口调用场景或者使用动态代理的场景中,偶尔会出现UndeclaredThrowableException,又或者 在使用反射的场景中,出现InvocationTargetException,这都与我们所期望的异常不一致,且将真实的异常信息隐藏在更深一层的堆栈中。本文将重 点分析下UndeclaredThrowableException …阅读全文 -
MacOS 中切换 JDK
倘若装有多个版本,特别是从 8 跨到 9 这个分界线,如果是基于 IDE,那么一般使用 IDE 提供的 JDK 设置来指定就可以了。但如果是直接命令执行,那就需要来个方便切换版本的方法。 对于 MacOS,只需要设定 [代码片段] 这个环境变量就可以了,甚至不必要把这个路径添加到 [代码片段] 中。 同时,在 MacOS 中,JAVA 相关有个好用的内置工具: [代码片段] …阅读全文 -
Java进阶知识点7:不要只会写synchronized - JDK十大并发编程组件总结 - 敲代码
【摘要】一、背景 提到Java中的并发编程,首先想到的便是使用synchronized代码块,保证代码块在并发环境下有序执行,从而避免冲突。如果涉及多线程间 通信,可以再在synchronized代码块中使用wait和notify进行事件的通知。 不过使用synchronized+wait+notify进行多 阅读全文 …阅读全文 -
java - 对于 提示信息为 unknown source的解决办法: jdk 替换jre, 编译
refer to: https://stackoverflow.com/questions/3132302/unknown-source-in- exception-stack-trace 昨天部署的一个java项目, 发现运行出错时,我的内心是完全懵逼的: [代码片段] 搜了一下,发现, 要求使用JDK, 因为使用JRE的话就会这样。 于是更改 %JAVA_HOME% 和 …阅读全文