
JDK 8
文章平均质量分 88
JDK 8 下新特性的学习与实际使用
BigBug_500
Talk is cheap.Show me the code.
EmailMeAt:snail.pu@foxmail.com
展开
-
JVM系列:附、常用 JVM 参数含义与实际应用配置
在前几篇的 JVM系列 中,我们已经具备了 JVM 相关的基础知识,现在我们需要将学到的知识,在实际场景中运用起来,通过配置相关的原创 2020-12-06 17:10:17 · 2418 阅读 · 0 评论 -
Netty 中的 ByteBuf
所有的缓冲区,都是为了平衡了 数据产生方 和 数据消费方 的处理效率差异。零拷贝为什么需要零拷贝? 应用程序从磁盘或网卡上获取数据时,为了合规的在不同的缓冲区域操作数据,需要来回拷贝数据,在拷贝的过程中,会消耗一部分时间,还可能会占用 CPU ,进而影响系统的处理效率。为了提高应用的吞吐量,我们应该尽量避免数据拷贝的过程出现。 使用零拷贝方式,不仅仅带来更少的数据复制,还能带来其他的性能优势,例如更少的上下文切换,更少的 CPU 缓存伪共享以及无 CPU 校验和计算。网络数据拷贝流程的演变:原创 2020-10-08 22:58:29 · 1055 阅读 · 0 评论 -
List容器线程安全,Queue
区别:ArrayList底层是数组结构,查询快,增删慢,线程不安全,效率高。LinkedList底层是双向链表数据结构,查询慢,增删快,线程不安全,效率高。Vector底层是数组结构,查询快,增删慢,线程安全,效率低。注意:所谓的线程安全,不包括对这些集合类的复合操作;当第一个线程对复合操作时,第二个线程也进入未同步的复合操作,就会出现问题。但多线程单个去操作线程安全集合中的方...原创 2019-04-22 11:38:02 · 1453 阅读 · 0 评论 -
JVM系列:三、JVM 优化与问题排查思路
常用命令jpsjps -lvjmapjmap 命令用于生产堆转存快照。命令格式:jmap [ option ] pidjmap [ option ] executable corejmap [ option ] [server-id@]remote-hostname-or-IP参数选项:-dump:[live,]format=b,file=<filename> 使用 hprof 二进制形式,输出 jvm 的 heap 内容到文件. live子选项是可选的,假如指定 live原创 2020-08-15 18:45:04 · 2018 阅读 · 0 评论 -
JVM系列:二、不同 GC 的演变与差异
垃圾回收 目前垃圾收集器基本都是采用分代收集的方法,其思想是,针对堆中不同存活周期、不同内存大小的对象采取不同的垃圾回收策略。堆(Heap)中新生代、老年代的划分与垃圾回收算法常见的 垃圾回收算法 如下:引用计数(无法解决循环引用的问题,故 JVM 中没有使用)复制(会对类进行反复复制,带来资源的消耗)标记清除(Mark-Sweep,被标记的清除对象清除后,会带来内存碎片,导致内...原创 2020-11-28 14:42:20 · 1495 阅读 · 1 评论 -
JVM系列:一、JVM内存分区及作用(JDK8)
JVM内存分区及作用:JDK 7之前的方法区 / 永久代(Method Area):在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法区里的常量池和对类型的卸载方法区主要用来存储已被虚拟机加载的类的信息、常量、静态变量和即时编译器编译后的代码等数据。该区域是被线程共享的。方法区里有一个运行时常量池,用于存放静态编译产生的字面量和符号引用。该常量池具有动态性,...原创 2020-03-08 16:28:06 · 3878 阅读 · 3 评论 -
JDK 7 / 8版本下,Map的学习
HashMap:为什么用HashMap:HashMap 是一个散列桶(数组和链表/红黑树),它存储的内容是键值对 key-value 映射当hash冲突越少时(链表长度短,红黑树深度小),查找的时间复杂度越接近O(1);添加,删除,修改的时间复杂度都为O(1)HashMap 是非 synchronized,所以对 HashMap的操作很快HashMap、LinkedHashMap 可以接...原创 2020-01-20 11:12:28 · 897 阅读 · 1 评论 -
JDK 8 下的Stream、Lambda、Optional
传统 for 循环的函数式替代方案场景:现需要将三个拥有共同父类的 Enum 对象中的值,封装到另外一个对象的 List 集合中去解决方案:使用传统的外部迭代 for 循环解决:第一层 for 循环三个 Enum 对象,第二层循环每一个 Enum 对象,完成对象的转换。缺点显而易见,嵌套 for 循环带来的时间复杂度非常高,可读性差等。使用流进行内部迭代,配合 Lambda 完成遍历功能...原创 2020-01-12 13:50:34 · 926 阅读 · 0 评论