首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
Java
订阅
jsam
更多收藏集
微信扫码分享
微信
新浪微博
QQ
11篇文章 · 0订阅
Java之CMS GC的7个阶段
CMS收集器的主要设计目标是:低应用停顿时间。它通过两种方式实现这一目标: 不压缩老年代,而是使用空闲列表来管理回收空间。 大部分标记清理工作与应用程序并发执行。 主要问题:由于不压缩带来的老年代堆碎片,或者在对象分配率高的情况下,都可能导致Full GC。 CMS收集器的GC…
Javassist实现JDK动态代理
提到JDK动态代理,相信很多人并不陌生。然而,对于动态代理的实现原理,以及如何编码实现动态代理功能,可能知道的人就比较少了。接下一来,我们就一起来看看JDK动态代理的基本原理,以及如何通过Javassist进行模拟实现。 以下是一个基于JDK动态代理的hello world示例…
为什么Java String哈希乘数为31?
前面简单介绍了[ 经典的Times 33 哈希算法 ],这篇我们通过分析Java 1.8 String类的哈希算法,继续聊聊对乘数的选择。 可以看到,String的哈希算法也是采用了Times 33的思路,只不过乘数选择了31。 hash默认值为0. 判断h == 0是为了缓存…
掌握这些,你也能徒手实现ArrayList、Vector和Stack
今天我们要学习的,是数组这种数据结构在JDK集合中的应用。 数组作为最简单的一种线性结构,操作也比较简单。虽说简单,但它却是编程语言底层实现不可缺少的。 它的特点是,按索引随机查找快,插入和删除比较慢。因为按照索引可以直接定位到某个元素,而插入或删除通常会涉及到数据的迁移。 数…
JVM之卡表(Card Table)
我们知道,JVM在进行垃圾收集时,需要先标记所有可达对象,然后再清除不可达对象,释放内存空间。那么,如何快速的找到所有可达对象呢? 最简单粗暴的实现,就是每次进行垃圾收集时,都对整个堆中的所有对象进行扫描,找到所有存活对象。逻辑是简单,但性能比较差。 简单粗暴的实现方式,通常都…
HotSpot的7种垃圾收集器组合
HotSpot共有7种垃圾收集器,3个新生代垃圾收集器,3个老年代垃圾收集器,以及G1,一共构成7种可供选择的垃圾收集器组合。 新生代与老年代垃圾收集器之间形成6种组合,每个新生代垃圾收集器都对应2种组合。 注:在Parallel Scavenge收集器架构中本身有PS Mar…
JVM之压缩指针(CompressedOops)
对于32位机器,进程能使用的最大内存是4G。如果进程需要使用更多的内存,需要使用64位机器。 对于Java进程,在oop只有32位时,只能引用4G内存。因此,如果需要使用更大的堆内存,需要部署64位JVM。这样,oop为64位,可引用的堆内存就更大了。 注:oop(ordina…
Java之CMS GC Causes
Allocation Failure happens when there isn't enough free space to create new objects in Young generation. Allocation failures triggers Young…
从科学记数法到浮点数标准IEEE 754
很遗憾,由于这篇文章有大量的公式,如果直接发表内容公式会显示不了,因此只能发成图片。
OutOfMemoryError之unable to create new native thread原因分析及6种解决方案
java.lang.OutOfMemoryError:unable to create new native thread 是比较常见的一种异常,表示应用程序无法创建新的线程。 线程数超过系统限制。 通过分析异常可能产生的原因,可以通过选择以下合适的方案进行排查解决。 1. 是…