首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Java基础
行百里er
创建于2022-07-13
订阅专栏
包括JVM、GC以及Java代码优化小技巧等内容。
等 21 人订阅
共13篇文章
创建于2022-07-13
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
从一道面试题进入Java并发新机制---J.U.C
携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第10天,点击查看活动详情 从一道面试题进入Java并发新机制---J.U.C 什么是 J.U.C ? 它是 Java java.u
Java最强大的技术之一:反射
携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第8天,点击查看活动详情 何为反射? Java的 反射机制 是在运行状态中,对于任意一个类,都能够 知道这个类的所有属性和方法 ;对
Java 8 Stream API可以怎么玩?
携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第7天,点击查看活动详情 Java 8新特性之一 Stream 的官方描述: Stream是一组用来处理数组、集合的API。 Jav
Java 8之Lambda表达式的写法套路
携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天,点击查看活动详情 引入 相信现在搞Java的童鞋都知道启动一个线程可以这样写: Thread里面需要传的是一个Runnabl
突击:new Object在内存中占多少字节?
如何知道一个对象在内存中的大小呢?C语言有个叫sizeOf的东西,很方便就能知道对象大小。但是Java没有这样的东西啊,不慌,Java本身有一个Agent技术。 新建一个项目ObjectSizeAgent,并制作成jar包。 不同的IDE工具打jar的方式不同。 在实验项目中导…
【GC系列】JVM的常用GC参数及GC日志解析
今天继续GC系列第三篇,熬夜不易,欢迎一键三连,给个鼓励,不点赞也没关系,我还可以,谢谢捧场[捂脸]。 垃圾回收器通常是组合使用的,我根据官网总结一下常见垃圾回收器的组合。 启用CMS垃圾收集器用于老年代。 默认情况下,此选项是禁用的,HotSpot VM会根据计算机的配置和J…
【GC系列】JVM堆内存分代模型及常见的垃圾回收器
1. 内存分代模型 为什么要说JVM的内存分代模型呢,因为内存分代和垃圾回收器的运行是有关系的。 现在大部分用到的垃圾回收器在逻辑上是分代的,除了G1之外的其他垃圾回收器在逻辑上和物理上都是分代的。 逻辑分代是「给内存做一些概念上的区分」,物理分代是真正的物理内存。 新生代(y…
【GC系列】JVM垃圾定位及垃圾回收算法浅析
很简单,没有引用指向的任何对象都叫做垃圾(garbage)。 在某一内存空间中,Java程序制造了很多对象被引用,有的对象还引用别的对象,中途有对象不被需要了就没有指向他的引用了,这些没有引用指向的东西就是垃圾。 这些垃圾不需要自己回收,JVM中有类似于街道上那些勤劳的环卫工的…
【优雅的避坑】不安全!别再共享SimpleDateFormat了
一个线程这样做当然是没问题的。 既然官方文档都说了在多线程访问的场景中必须使用synchronized同步,那么就来验证一下,多线程场景下使用SimpleDateFormat会出现什么问题。 正常情况下,以上代码results.size()的结果应该是THREAD_NUMBER…
【优雅的避坑】你的钱算错了!为什么0.1+0.2不等于0.3了!?
计算机内部是用位来存储和处理数据的。用一个二进制串表示数据,十进制转换成二进制,二进制转换成十进制的方法是: 由此可知,0.1的二进制表示将会是0.0001100011... 但是计算机是不会允许它一直循环下去的,否则内存会爆掉的。 计算机会在某个精度点直接舍弃剩下的位数,所以…
【优雅的避坑】不要轻易使用==比较两个Integer的值
自然,我们都知道会打印 j = 667,曾经我很好奇,i是Integer对象,属于包装类型,而j是int基础数据类型,他俩怎么会在一起运算呢?直到我扒开Integer的外表,直接看到了他的内涵... 自动装箱(auto boxing)和自动拆箱(auto unboxing)是J…
【优雅的避坑】new HashMap(list.size())指定size就能完全避免扩容带来的额外开销了吗?
所以,集合初始化时,指定集合初始值大小能提升性能。 由于我们无法直接调用hashMap的capacity()方法,因此使用反射来查看每添加一个元素,它的容量变化,以此来监测hashMap的扩容次数。 为什么会酱紫呢?带着上面的三个发现,来看一下HashMap的扩容机制。 int…
【优雅的避坑】-从验证码生成代码的优化到JVM栈和堆
实际业务中用验证码进行登录、注册等场景非常普遍,基本上现在的应用都会有这个功能,Java中已为我们提供了Math.random()以及Random类。 假如业务上要求我们生成一个「6位数字」的验证码,相信大家都能搞出来,用随机数函数,加上一些手段很容易就能构造出一个验证码。 我…