摘要: 之前在某个地方看到的一个问题,“如果为Java虚拟机指定的堆内存大于物理内存会怎么样?”,今天正好又看到了HotSpot VM中关于为堆分配内存的源代码实现,顺便从源代码角度解答一下这个问题。 我们平时为堆分配内存时,会调用到os::reserve_memory()函数,这个函数的实现如下: cha 阅读全文
posted @ 2025-05-12 08:28 鸠摩(马智) 阅读(897) 评论(0) 推荐(0)
摘要: 打算建立一个JDK网站,将目前JDK的各种重要特性都深入分析一下。希望JDK中各种技术实现细节都可以在这个网站上查到。相关的模块以及阅读顺序如下图所示。 没有将一些内容规划进来,Java语言基本语法太简单,Java框架、中间件等内容太多了,JDK类库资料太丰富了,所以这些内容就暂时不写了。下面就是3 阅读全文
posted @ 2025-03-01 09:39 鸠摩(马智) 阅读(150) 评论(0) 推荐(0)
摘要: “JDK源码剖析网”目前只上线了一小部分的内容(而且还未更新完成),Javac编译器,HotSpot基础、垃圾收集器以及HotSpot运行时将在今年10月份之前做为付费内容努力更新完毕。到时候,整个JDK就完成了最核心的一块拼图,剩下2块最主要的拼图就是G1垃圾收集器和C2编译器了,G1垃圾收集器和 阅读全文
posted @ 2025-05-23 16:11 鸠摩(马智) 阅读(316) 评论(0) 推荐(0)
摘要: 用来运行Java语言的HotSpot VM主要是用C++语言来写的,所以我们在研究JDK时不得不去学习C++这门语言。C++和Java都是面向对象的语言,所以它们常被拿来做比较。本文将从性能的角度对比分析 Java 和 C++,粗略探讨两者在峰值速度、启动时间和启动性能以及内存利用率方面的差异。 1 阅读全文
posted @ 2025-05-13 09:07 鸠摩(马智) 阅读(398) 评论(0) 推荐(1)
摘要: Java通过垃圾收集器(Garbage Collection,简称GC)实现自动内存管理,这样可有效减轻Java应用开发人员的负担,也避免了更多内存泄露的风险。 如果你用过C++等需要手动管理内存的语言,那么你就会体会到GC带来的便利,降低了语言使用的门槛。 不过在我们享受自动内存管理带来的便利时, 阅读全文
posted @ 2025-05-08 10:12 鸠摩(马智) 阅读(322) 评论(0) 推荐(1)
摘要: 泛型存在于Java源代码中,在编译为字节码文件之前都会进行泛型擦除(type erasure),因此,Java的泛型完全由Javac等编译器在编译期提供支持,可以理解为Java的一颗语法糖,这种方式实现的泛型有时也称为“伪泛型”。 泛型擦除本质上就是擦除与泛型相关的一切信息,例如参数化类型、类型变量 阅读全文
posted @ 2025-05-06 15:51 鸠摩(马智) 阅读(685) 评论(1) 推荐(0)
摘要: 经典面试题目“OOM异常会导致JVM退出吗? 我的回答是“这要分情况看,对于守护线程来说,OOM并不会导致JVM退出;对于非守护线程来说,如果某个线程捕获了OOM异常并处理异常后线程并未退出,那JVM并不会退出;如果线程没有捕获Error异常,那么将由全局的异常处理器处理,默认的全局的异常处理器也会 阅读全文
posted @ 2025-04-29 16:50 鸠摩(马智) 阅读(485) 评论(1) 推荐(1)
摘要: 之前面试被问到过“当GC垃圾收集时,是所有的用户线程都停止了吗?”,这一篇我们来探究一下这个问题。 其实执行本地代码的线程仍然可以运行,那么这些线程一旦改变了对象中的引用关系或创建了新的对象,这会不会造成GC错误,引发问题呢? 首先举一个例子,证明在GC期间,执行native函数的线程仍然在运行,实 阅读全文
posted @ 2025-04-26 11:11 鸠摩(马智) 阅读(508) 评论(0) 推荐(0)
摘要: 有相关统计数据显示,Java开发者有1000万+,这么多的人每天都在使用Java虚拟机进行开发,不过真正看过虚拟机代码的人应该非常非常少吧,可能有些人研究过,不过由于Java虚拟机是一个高度复杂的系统性工程,过于复杂的实现让他们最终放弃。 目前服务器上使用最多的虚拟机还是HotSpot,HotSpo 阅读全文
posted @ 2025-04-25 09:22 鸠摩(马智) 阅读(1831) 评论(2) 推荐(4)
摘要: 目前国内发布自己JDK版本的几家公司: 腾讯和阿里是因为有Java应用和云业务,所以在优化发布自己的版本 华为也是因为Java应用和云业务,不过因为还有服务器业务,所以还有Java课题的跑分需求,如SPECpower和SPECjbb跑分高代表自己服务器性能好 一些CPU厂,如龙芯,由于自己的指令集与 阅读全文
posted @ 2025-04-23 09:03 鸠摩(马智) 阅读(1257) 评论(6) 推荐(3)
摘要: 最近在AI辅助下做一个简单的网站开发,真是感叹AI的强大呀! 虽然多年前我做过Web前端和后端开发,但是那时候的开发没有现在这么容易入门、上手。 之前SSH(Structs2+Spring+Hibernate)整合都的费点功夫,现在Spring已经一家独大了; 之前Web开发还需要单独下载Tomca 阅读全文
posted @ 2025-04-21 08:03 鸠摩(马智) 阅读(1570) 评论(5) 推荐(5)