- 浏览: 400914 次
- 性别:
- 来自: 广州
最新评论
-
xxbb77:
说的有点道理
保持好奇心,把时间花在刀刃上 -
JavaAiHaoZhezh:
有时候需要学会放手,别让自己太劳累 -
1011729483:
你好:楼主我想请问一下刚开始你访问项目进去login.jsp页 ...
菜鸟-手把手教你把Acegi应用到实际项目中(2) -
zhglance:
很赞,胜过好多出版物
程序员必备:Linux日常维护命令 -
zizhi9999:
为什么我的总是说timeout呢 很急 啊
利用SNMP获取、走访节点值
文章列表
Crayon AIChatGPT Image GeneratorChatGPT4oMiniOld Character AIGen Alpha SlangX Image GeneratorViduVideo StudioBatotoCek KhodamFree Monopoly DiceNSFW DiscordStitch WallpaperGood Night ImagesTaylor and TravisNot Like UsEspresso Sabrina996GeekBinaryLifeFreshnessStrands HintAI Paragraph Rewriter
Humani ...
博客地址:https://binarylife.icu/
效果如下:
大家好,我已转战公众号多时,本博已停更。
欢迎关注我的公众号:二进制之路
个人博客:https://binarylife.icu/
CMS收集器的主要设计目标是:低应用停顿时间。它通过两种方式实现这一目标:
不压缩老年代,而是使用空闲列表来管理回收空间。
大部分标记清理工作与应用程序并发执行。
主要问题:由于不压缩带来的老年代堆碎片,或者在对象分配率高的情况下,都可能导致Full GC。
CMS收集器的GC周期主要由7个阶段组成,其中有两个阶段会发生stop-the-world,其他阶段都是并发执行的。(亦有4个阶段、6个阶段等说法)
Phase 1: Initial Mark(初始化标记)
初始化标记阶段,是CMS GC的第一个阶段,也是标记阶
Allocation Failure
Allocation Failure happens when there isn't enough free space to create new objects in Young generation. Allocation failures triggers Young GC.
On Linux, the JVM can trigger a GC if the kernel notifies there isn't much memory left via mem_notify.
产生原因:新生代没有足够的空间分配对象。
触发GC类型: ...
保持好奇心
如果你自己或身边有小孩,你会发现,小孩对未曾接触过的东西都会非常好奇,而且时常会问为什么,这是我们认识世界的方式。
随着年龄的增长,日常的东西见多了,好奇心也会随之减弱,能激起你好奇心的东西会越来越少。
之所以会出现这种情况,一方面是因为已经习以为常,环境的限制使你很少接触到更新鲜的事物;另一方面是由于人的懒惰,凡事容易浮于表面,体会不到深入了解一件事物之美。
因为好奇心,有的人阅读了大量小说,不仅作文写得好,还可能成为金庸大侠。
因为好奇心,有的人研读了大量源码,解决了各种宇宙难题,最终成为程序员心目中的大神。
相反,人一旦丧失了好奇心,也就很难再成长了。时间长了, ...
很遗憾,由于这篇文章有大量的公式,如果直接发表内容公式会显示不了,因此只能发成图片。
如果想获得更好的阅读体验,请点击:从科学记数法到浮点数标准IEEE 754
参考
https://zh.wikipedia.org/wiki/IEEE_754
https://zh.wikipedia.org/zh-hans/%E6%B5%AE%E7%82%B9%E6%95%B0
https://zh.wikipedia.org/wiki/%E7%A7%91%E5%AD%A6%E8%AE%B0%E6%95%B0%E6%B3%95
https://zh.wikipedia.org/wiki/N ...
本篇为《JVM指令分析实例》的第五篇,相关实例均使用Oracle JDK 1.8编译,并使用javap生成字节码指令清单。
前几篇传送门:
JVM指令分析实例一(常量、局部变量、for循环)
JVM指令分析实例二(算术运算、常量池、控制结构)
JVM指令分析实例三(方法调用、类实例)
JVM指令分析实例四(数组、switch)
本篇为《JVM指令分析实例》的第四篇,相关实例均使用Oracle JDK 1.8编译,并使用javap生成字节码指令清单。
前几篇传送门:
JVM指令分析实例一(常量、局部变量、for循环)
JVM指令分析实例二(算术运算、常量池、控制结构)
JVM指令分析实例三(方法调用、类实例)
数组
相关实例均使用Oracle JDK 1.8编译,并使用javap生成字节码指令清单。
算术运算
Java虚拟机通常基于操作数栈进行算术运算。只有iinc指令例外,它直接对局部变量进行自增操作。
实例代码
Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的操作码以及跟随其后的零至多个代表此操作所需参数的操作数所构成。虚拟机中许多指令并不包含操作数,只有一个操作码。
Java虚拟机限制操作码的长度为1个字节,因此最多只能有256个指令。
指令格式
以下指令格式,是基于Oracle JDK编译后,通过javap工具生成的指令描述格式。
<index> <
发表文章之后,发现很多图片显示不了,请阅读我的公众号文章,以获得本文最佳体验:
Java Class文件结构实例分析(下)
本篇我们继续分析Class文件结构的方法及属性部分内容,上节内容回顾请查看:
Java Class文件结构实例分析(上)
发表文章之后,发现很多图片显示不了,请阅读我的公众号文章,以获得本文最佳体验:
Java Class文件结构实例分析(上)
本文假定读者对Java Class文件格式有一些基本的了解,建议结合相关书籍进行对照阅读。
Class文件格式信息
提到JDK动态代理,相信很多人并不陌生。然而,对于动态代理的实现原理,以及如何编码实现动态代理功能,可能知道的人就比较少了。接下一来,我们就一起来看看JDK动态代理的基本原理,以及如何通过Javassist进行模拟实现。
JDK动态代理
示例
以下是一个基于JDK动态代理的hello world示例,在很多地方都可以看到类似的版本。
影响TCP 网络时延的因素
硬件速度
网络和服务器的负载
请求和响应报文的尺寸
客户端和服务器之间的距离
TCP 协议的技术复杂性
TCP协议产生的时延
TCP 连接建立握手;