Java
文章平均质量分 93
sun_tantan
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java中的网络IO模型:BIO/NIO/AIO
目录Java IO类型Java网络IO模型:BIO/NIO/AIO1. Java BIO(同步阻塞)2. Java NIO(同步非阻塞)3. Java AIO(异步非阻塞)BIO、NIO、AIO 适用场景分析 Java IO类型 Java IO常见使用场景 磁盘操作: File 字节操作: InputStream 和 OutputStream 字符操作: Reader 和 Writer 对象操作: Serializable 网络操作 Java 中的网络支持 InetAddress: 用于表示网络上的硬原创 2021-08-19 19:47:54 · 558 阅读 · 0 评论 -
【JVM】常见调试排错场景、内存与线程Dump分析
目录OOM分析Java堆内存溢出元空间/方法区溢出线程Dump OOM分析 Java堆内存溢出 启动参数: -Xms250m -Xmx250m ,最大最小堆内存250m,禁止自动扩展内存 -XX:+HeapDumpOnOutOfMemoryError:在发生OOM时进行堆内存Dump生成快照 public class oomController { @RequestMapping(value = "/test", method = RequestMethod.GET) publ原创 2021-07-21 01:09:35 · 808 阅读 · 1 评论 -
【JVM】字节码与ASM字节码增强、Instrument实现类的动态重加载
字节码与ASM字节码增强 以下内容摘自:字节码增强技术探索 什么是字节码? Java之所以可以“一次编译,到处运行”,一是因为JVM针对各种操作系统、平台都进行了定制,二是因为无论在什么平台,都可以编译生成固定格式的字节码(.class文件)供JVM使用 之所以被称之为字节码,是因为字节码文件由十六进制值组成,而JVM以两个十六进制值为一组,即以字节为单位进行读取。 在Java中一般是用javac命令编译源代码为字节码文件,一个.java文件从编译到运行的示例如图所示。 编译:由javac编译,原创 2021-07-14 09:59:39 · 2260 阅读 · 1 评论 -
【JVM】类加载过程与类加载器的双亲委派模型
目录概述——类加载机制类加载的过程1. 加载2. 验证3. 准备4. 解析5. 初始化类加载器的双亲委派模型类与类加载器 概述——类加载机制 Class文件中描述的各种信息,最终都需要加载到虚拟机中才能运用和使用,而虚拟机如何加载这些文件?Class文件中的信息进入到虚拟机后会发生什么变化? 虚拟机的类加载机制:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。 这些过程都是在程序运行期间完成的,即运行期类加载。 类加载的过程原创 2021-07-09 00:01:46 · 365 阅读 · 1 评论 -
【JVM】JIT即时编译器的优化、JVM中基于解释+编译工作模式
目录解释与编译?Java程序的运行过程JIT即时编译器JVM工作模式解释器+编译器工作模式分层编译模式(1个解释器+2个编译器)编译优化 解释与编译? 高级程序语言按照程序的执行方式分为解释与编译两种。 解释型语言 指解释器对源程序逐行解释,成为特定平台的机器码并立即执行。 其执行效率不高,却有着好的移植性。 编译型语言 指编译器针对特定的操作系统,将源代码一次性翻译成可被该平台执行的机器码。 最大的优势是执行速度快。 Java程序的运行过程 JVM是Java虚拟机,目的为在不同的平台上(W原创 2021-07-04 22:50:21 · 436 阅读 · 2 评论 -
【JVM】SafePoint与各类垃圾收集器工作过程
垃圾回收器 新生代可配置的回收器:Serial、ParNew、Parallel Scavenge 老年代配置的回收器:CMS、Serial Old、Parallel Old 新生代和老年代区域的回收器之间进行连线,说明他们之间可以搭配使用。 G1是一个独立的收集器不依赖其他6种收集器 ...原创 2021-07-03 18:33:06 · 848 阅读 · 1 评论 -
【JVM】垃圾回收算法、堆内存分配与GC过程
目录内存模型1. 程序计数器2. 栈本地方法栈3. 堆4. 方法区运行时常量池常量池垃圾回收1.方法区2. 堆堆内存回收内容GC角度区域划分GC类型垃圾回收算法(新生代)复制算法内存分配策略 内存模型 1. 程序计数器 它是一块很小的内存空间,是JVM中唯一一块没有规定任何OutofMemeryError的内存。 它的生命周期与线程一致,Cpu切换不同的线程执行,当切换到一个线程时,需要知道从哪里开始继续执行,寄存器中的值就储存了下一条应该执行什么字节码指令,具体存储的是下一条指令的偏移地址。 2. 栈原创 2021-07-03 15:53:45 · 373 阅读 · 0 评论 -
【JVM】内存模型之运行时数据区
目录运行时数据区1. 程序计数器2. 栈本地方法栈3. 堆4. 方法区运行时常量池常量池Q:是否所有new出来的对象都分配在堆内存中? 运行时数据区 1. 程序计数器 它是一块很小的内存空间,是JVM中唯一一块没有规定任何OutofMemeryError的内存。 它的生命周期与线程一致,Cpu切换不同的线程执行,当切换到一个线程时,需要知道从哪里开始继续执行,寄存器中的值就储存了下一条应该执行什么字节码指令,具体存储的是下一条指令的偏移地址。 2. 栈 线程私有,它的生命周期与线程相同。每当创建原创 2021-07-03 15:52:47 · 181 阅读 · 0 评论 -
Java 分层Web结构中 如何优雅地异常处理
究竟是直接处理打印日志,还是不断向上抛出,这是个问题。没有规则,只有建议。原创 2021-04-24 14:18:56 · 379 阅读 · 0 评论
分享