java高性能编程
CD_GodBo
脸皮厚是程序员的核心竞争力
展开
-
JVM性能篇之垃圾回收机制
垃圾回收机制 自动垃圾收集 自动垃圾收集是查看堆内存,识别正在使用哪些对象以及哪些对象未被删除以及未使用对象的过程。 使用中的对象或引用的对象意味着程序的某些部分仍然维护指向该对象的指针。 程序的任何部分都不再引用未使用的对象或未引用的对象,因此可以回收未引用对象使用的内存。 像C这样的编程语言中,分配和释放内存是一个手动过程。 在java中,解除分配内存的过程由垃圾收集器自动处理。 如何确定内存需要被回收 该过程的第一步称为标记。这是垃圾收集器识别哪些内存正在使用而哪些不在使用的地方。 [外链图片转存失败原创 2020-05-14 16:34:19 · 377 阅读 · 0 评论 -
JVM性能篇之类加载机制
类加载机制 运行时数据区 类生命周期 类加载器 类加载器负责装入类,搜索网络、jar、zip、文件夹、二进制数据、内存等指定位置的类资源。 一个java程序运行,最少有三个类加载器实例,负责不同类的加载。 验证问题: 查看类对应的加载器 JVM如何知道我们的类在何方 类不会重复加载 类的卸载 双亲委派模型 查看类对应的加载器 /** * 查看类的加载器实例 */ public class ClassLoaderView { public static void main(String原创 2020-05-14 16:29:17 · 183 阅读 · 0 评论 -
高并发网络编程之NIO非阻塞网络编程
NIO非阻塞网络编程 始于Java1.4,提供了新的JAVA IO操作非阻塞API。用意是替代Java IO和Java Networking相关的API。 三个核心组件: Buffer缓冲区 Channel通道 Selector选择器 Buffer缓冲区 缓冲区本质上是一个可以写入数据的内存块(类似数组),然后可以再次读取。此内存块包含在NIO Buffer对象中,该对象提供了一组方法,可以更轻松地使用内存块。 相比较直接对数组的操作,Buffer API更加容易操作和管理。 使用Buffer进行数据写原创 2020-05-14 16:21:33 · 292 阅读 · 0 评论 -
多线程并发编程之Synchronized原理解析
Synchronized原理解析 synchronized(this) { i++; } 思考这三个问题? this对象加锁的状态如何记录? 状态被记录到this对象里面了吗? 若锁占用,线程挂起;释放锁时,唤醒挂起的线程,是如何做到的? 堆中对象的存储 代码示例: public class Demo5_main { public static void main(Stri...原创 2020-03-20 14:36:18 · 172 阅读 · 0 评论 -
JAVA内存模型 VS JVM运行时数据区
JVM运行时数据区 线程共享:所有线程能访问这块内存数据,随虚拟机或者GC而创建和销毁 线程独占:每个线程都会有他独立的空间,随线程生命周期而创建和销毁 线程共享部分又包含方法区和堆内存 方法区:用来存放类信息、常量、静态变量、编译后的代码等数据,虚拟机规范中这是一个逻辑划分,具体实现根据不同的虚拟机来实现。比如oracle的Hotspot虚拟机在java7中放在永久代,java8...原创 2020-03-04 14:48:44 · 348 阅读 · 0 评论