![](https://img-blog.csdnimg.cn/2019092723490076.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
----Java虚拟机
文章平均质量分 95
syrdbt
这个作者很懒,什么都没留下…
展开
-
Netty 粘包/拆包、解码工具类
1. 概述1.1 粘包发送 abc def,接收 abcdef原因滑动窗口:假设发送方 256 bytes 表示一个完整报文,但由于接收方处理不及时且窗口大小足够大,这 256 bytes 字节就会缓冲在接收方的滑动窗口中,当滑动窗口中缓冲了多个报文就会粘包Nagle 算法:会造成粘包1.2 半包现象,发送 abcdef,接收 abc def原因应用层:接收方 ByteBuf 小于实际发送数据量MSS 限制:当发送的数据超过 MSS 限制后,会将数据切分发送,就会造成半包滑动窗口原创 2024-06-30 17:49:28 · 356 阅读 · 0 评论 -
Java 自定义类加载器
1.系统类加载器系统提供的类加载器有如下三种:启动类加载器,扩展类加载器,引用程序类加载器。1.1启动类加载器启动类加载器(Bootstrap ClassLoader)负责将存放在 <JRE_HOME>\lib 目录中的,或者被 -Xbootclasspath 参数所指定的路径中的,并且是虚拟机识别的(仅按照文件名识别,如 rt.jar,名字不符合的类库即使放在 li...原创 2019-07-27 10:41:37 · 302 阅读 · 0 评论 -
JVM 的垃圾收集器
JVM 的垃圾收集器:Serial、ParNew 、Parallel Scavenge、Serial Old、Parallel Old、CMS 、G1 。1.概述下图中垃圾收集器只要连线则表明垃圾收集器可以搭配使用。没有万能的收集器,具体应用选择合适的垃圾收集器。2.Serial垃圾收集器单线程收集器,用于新生代,这里的单线程指的是它在进行垃圾回收时暂停其他工作线程...原创 2019-07-19 09:43:15 · 154 阅读 · 0 评论 -
JVM的垃圾收集(GC)算法
JVM的垃圾收集算法:标记-清除,复制,标记-整理,分代回收。1.“标记-清除”垃圾收集算法“标记-清除”垃圾收集算法有两个阶段:标记 和 清除。标记 是标记所有需要回收的对象,清除 是清除所有标记的回收对象。缺点:(1)会产生大量不连续的内存碎片,因为对象分配内存需要是连续的内存空间,如果对象太大,且没有足够大的连续内存空间,会触发垃圾回收。(2)标记 和 清除效...原创 2019-07-15 20:23:14 · 196 阅读 · 0 评论 -
JVM 判断是否应该回收对象
JVM内存 中程序计数器、虚拟机栈、本地方法栈 3个区域随线程而生,随线程而灭。这几个区域不用考虑回收问题,因为方法结束后或者线程结束后,内存就跟着回收了。而Java堆和方法区不一样,一个接口的多个实现类需要的内存不一样,一个方法的多个分支需要的内存也可能不一样,我们只有在程序运行的时候才知道会创建那些对象,这部分内存的分配和回收都是动态的,垃圾收集主要所关注的就是Java堆和方法区。...原创 2019-07-01 14:18:40 · 216 阅读 · 0 评论 -
JVM 中对象的内存布局 和 对象访问定位
1.对象的内存布局对象的内存布局主要包括:对象头(Header)、实例数据(InstanceData)和对齐填充(Padding)。1.1对象头(Header)对象头包括:MarkWord和 和类型指针。MarkWord是对象自身运行时候的对象头数据,例如:哈希码,GC分代年龄,锁状态标志,线程持有的锁,偏向线程ID,偏向时间戳。这部分数据在 32位和 64位...原创 2019-06-28 14:50:26 · 290 阅读 · 0 评论 -
JVM虚拟机的类加载
类加载的生命周期:加载、验证、准备、解析、初始化、使用和 卸载 ,一共 7个阶段。1.概述在虚拟机的类加载机制中:类型的加载、连接和初始化 都是在程序运行期间完成的。这种策略会使类加载时稍微增加一些性能开销, 但是为 Java 提供了高度的灵活性 , 如 Java 的动态扩展语言特性就是依赖运行期动态加载和动态连接这个特点实现。举例: 如果编写一个面向接口的应用程序,可...原创 2019-06-26 18:06:36 · 159 阅读 · 0 评论 -
JVM 创建 Java 对象
JVM 创建 Java 对象的流程:类的加载,内存分配、对对象进行必要的设置、执行 <init> 方法初始化。1.JVM 创建 Java 对象使用 new 关键字可以创建一个类的对象。new指令在虚拟机中的执行操作: 类的加载:首先在常量池(方法区中)去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并检查这个符号引用代表的类是否已被加载、解析和...原创 2019-06-25 10:53:25 · 163 阅读 · 0 评论 -
Java虚拟机(JVM)内存结构
Java虚拟机(JVM)执行程序时会将管理的内存分为若干个不同的数据区域,分别为:程序计数器(Program Counter Register)、虚拟机栈(VMStack)、本地方法栈(NativeStack)、堆(Heap)、方法区(MethodArea)。1.概述线程共享的数据区:堆(Heap)、方法区(MethodArea)。线程私有的数据区:程序计数器(Progr...原创 2019-04-21 12:51:32 · 298 阅读 · 0 评论