
Java
文章平均质量分 84
微信搜索:万猫学社,关注后回复「ebook」得12本必读技术书籍。
万猫学社
系统架构设计师,优快云博客专家,华为云‧云享专家,阿里云专家博主,51CTO博客TOP红人。
展开
-
给女朋友讲 : Java线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”原创 2019-11-04 09:16:49 · 163437 阅读 · 313 评论 -
一篇文章快速搞懂Java中常用的四种线程池
在Java中使用线程池,可以用ThreadPoolExecutor的构造函数直接创建出线程池实例,如何使用参见之前的文章Java线程池构造参数详解。不过,在Executors类中,为我们提供了常用线程池的创建方法。接下来我们就来了解常用的四种:newFixedThreadPool首先,看一下这种线程池的创建方法:public static ExecutorService newFixedTh...原创 2019-10-26 08:09:58 · 21324 阅读 · 112 评论 -
关于Java线程池构造参数,你该了解这些!
在ThreadPoolExecutor类中有4个构造函数,最终调用的是如下函数:public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ...原创 2019-10-25 12:21:06 · 19649 阅读 · 126 评论 -
写给大忙人看的如何优雅设置线程池的大小
假如线程池的大小设置过大,线程上线文切换过于频繁,造成大量资源开销,反而会使性能降低;假如设置的太小,存在很多可用的处理器资源却未在工作,会造成资源的浪费和对吞吐量造成损失。如何优雅的设置线程池的大小呢?原创 2019-10-29 09:27:36 · 13261 阅读 · 105 评论 -
Java虚拟机的类加载机制全面解析
JVM把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被JVM直接使用的Java类型,这就是JVM的类加载机制。原创 2019-12-04 08:42:36 · 11268 阅读 · 18 评论 -
一篇文章彻底搞懂JVM加载中初始化的时机
JVM类加载过程分为几个阶段,分别是加载、验证、准备、解析和初始化。初始化阶段都是在什么时候触发的呢?本文给你带来详细解析。原创 2019-12-10 10:22:13 · 10465 阅读 · 9 评论 -
最通俗易懂的Class文件结构(上)
一般对于数据结构的分享难免比较枯燥,但是了解Class文件结构是了解Java虚拟机的重要基础之一。如果想比较深入地了解Java虚拟机,那么Class文件结构是不能不接触的。我会力求在保证逻辑准确的基础上,尽量通俗易懂地分享,并结合实际案例。原创 2019-11-19 09:02:10 · 13121 阅读 · 19 评论 -
最通俗易懂的Class文件结构(下)
上一篇文章分享了Class文件的主要构成,同时也详细分析了魔数、次版本号、主版本号、常量池集合、访问标志的构造,接下来继续详细分析类索引、父类索引、接口索引集合、字段表集合、方法表集合和属性表集合。原创 2019-11-26 09:20:17 · 14443 阅读 · 16 评论 -
月薪过万必会的:双亲委托模型
要想深入了解JVM,双亲委托模型是绕不过的,也是中高级开发面试时经常问到的。了解了它,你就会对JDBC、SPI、OSGi等的类加载机制有更深一层的理解。原创 2019-12-24 12:00:33 · 10370 阅读 · 24 评论 -
Java虚拟机内存结构及编码实战
深度解析了JVM的内存结构,图文并茂,生动形象。并编写多个示例代码,展示了JDK中各个不同的内存结构,详细讲解了不同版本JDK对内存结构实现的区别。原创 2019-12-23 08:48:10 · 16884 阅读 · 18 评论 -
面试官:怎么做JDK8的内存调优?
看着面试官真诚的眼神,心中暗想看起来年纪轻轻却提出如此直击灵魂的问题。擦了擦额头上汗,我稍微调整了一下紧张的情绪,对面试官说:原创 2020-08-03 10:23:15 · 77902 阅读 · 271 评论 -
Java的jinfo命令使用详解
jinfo命令简介jinfo(Java Virtual Machine Configuration Information)是JDK提供的一个可以实时查看Java虚拟机各种配置参数和系统属性的命令行工具。使用jps命令的-v参数可以查看Java虚拟机启动时显式指定的配置参数,如果想查看没有显式指定的配置参数就可以使用jinfo命令进行查看。另外,jinfo命令还可以查询Java虚拟机进程的System.getProperties()的内容。在没有dbgeng.dll的Windows系统中,必须安装用于W原创 2022-03-18 11:22:38 · 3469 阅读 · 0 评论 -
面试官:Java中对象都存放在堆中吗?你知道逃逸分析?
面试官:Java虚拟机的内存分为哪几个区域?我(微笑着):程序计数器、虚拟机栈、本地方法栈、堆、方法区面试官:对象一般存放在哪个区域?我:堆。面试官:对象都存放在堆中吗?我:是的。面试官:你了解过逃逸分析吗?我(皱了皱眉):是内存溢出吗?面试官:不是的。我(挠了挠头):不是很了解。面试官:今天的面试先到这,回去等消息吧!然后就没有然后了,不甘心的我开始了查找相关资料。逃逸分析逃逸分析(Escape Analysis)是一种确定对象的引用动态范围的分析方法,说.原创 2022-03-11 11:19:25 · 2144 阅读 · 0 评论 -
老徐和阿珍的故事:ArrayList和LinkedList的效率到底哪个高?
老徐问道:“阿珍,你知道ArrayList和LinkedList的区别吗?”阿珍微微一笑,说:“ArrayList是基于数组实现,LinkedList是基于链表实现。”老徐竖起了大拇指,说:“不错,有进步!那你知道ArrayList和LinkedList的效率到底哪个高?”阿珍回答:“在新增、删除元素时,LinkedList的效率要高于ArrayList,而在遍历的时候,ArrayList的效率要高于LinkedList。”老徐反问到:“不一定哦。在新增、删除元素时,LinkedList的效原创 2022-03-27 14:50:23 · 3384 阅读 · 8 评论 -
Java的jps命令使用详解
jps命令简介jps(Java Virtual Machine Process Status Tool)是JDK提供的一个可以列出正在运行的Java虚拟机的进程信息的命令行工具,它可以显示Java虚拟机进程的执行主类(Main Class,main()函数所在的类)名称、本地虚拟机唯一ID(LVMID,Local Virtual Machine Identifier)等信息。另外,jps命令只能显示它有访问权限的Java进程的信息。虽然jps命令的功能比较单一,但它使用的频率却很高。对于本地虚拟机来说,原创 2022-03-12 12:22:51 · 12363 阅读 · 0 评论 -
老徐和阿珍的故事:强引用、软引用、弱引用、虚引用,傻傻分不清楚
阿珍:“老徐,你这茶杯了泡的什么?红红的。”老徐:“这是枸杞呀。”阿珍:“枸杞?你最近什么干多了,这么虚!”老徐:“怎么可能?看我这身体,不弱的好吧!”阿珍一脸坏笑地说:“那就是软了。”老徐的老脸一红,辩解到:“我这是养养生,我很强的,好吧。”原创 2022-03-26 16:49:31 · 6044 阅读 · 0 评论 -
老徐和阿珍的故事:Runnable和Callable有什么不同?
阿珍探出头看了看老徐的屏幕,全部都是绿色的曲线图,好奇地问:“老徐,你看的这是什么?”老徐看的太入神,转过头才发现阿珍,尬尴地笑了笑说:“我就是看看最近的行情。”老徐立马切换了窗口。原创 2022-03-24 15:13:35 · 2257 阅读 · 0 评论 -
Java的jstat命令使用详解
jstat命令简介jstat(Java Virtual Machine Statistics Monitoring Tool)是JDK提供的一个可以监控Java虚拟机各种运行状态信息的命令行工具。它可以显示Java虚拟机中的类加载、内存、垃圾收集、即时编译等运行状态的信息。jstat命令参数命令语法:jstat generalOptionsjstat outputOptions [-t] [-h<lines>] <vmid> [<interval> [<c原创 2022-03-15 11:09:36 · 4524 阅读 · 0 评论 -
Java的jmap命令使用详解
jmap(Java Virtual Machine Memory Map)是JDK提供的一个可以生成Java虚拟机的堆转储快照dump文件的命令行工具。除此以外,jmap命令还可以查看finalize执行队列、Java堆和方法区的详细信息,比如空间使用率、当前使用的什么垃圾回收器、分代情况等等。原创 2022-03-19 13:22:37 · 41195 阅读 · 0 评论 -
Java的jstack命令使用详解
jstack命令简介jstack(Java Virtual Machine Stack Trace)是JDK提供的一个可以生成Java虚拟机当前时刻的线程快照信息的命令行工具。线程快照一般被称为threaddump或者javacore文件,是当前Java虚拟机中每个线程正在执行的Java线程、虚拟机内部线程和可选的本地方法堆栈帧的集合。对于每个方法栈帧,将会显示完整的类名、方法名、字节码索引(bytecode index,BCI)和行号。生成的线程快照可以用于定位线程出现长时间停顿的原因,比如:线程间死锁原创 2022-03-21 13:57:18 · 13947 阅读 · 0 评论 -
面试官:怎么做JDK8的垃圾收集器的调优?
如此浅显的回答,无法让面试官达到深入的要求,肯定不能满足面试官强烈的需求,果不其然面试官又追问到:原创 2020-08-11 09:39:32 · 12598 阅读 · 34 评论 -
学妹教你并发编程的三大特性:原子性、可见性、有序性
在并发编程中有三个非常重要的特性:原子性、有序性,、可见性,学妹发现你对它们不是很了解,她很着急,因为理解这三个特性对于能够正确地开发高并发程序有很大的帮助,接下来的面试中也极有可能被问到,小学妹就忍不住开始跟你逐一介绍起来。原创 2020-05-18 13:05:18 · 81146 阅读 · 255 评论 -
头条面试居然跟我扯了半小时的Semaphore
一个长头发、穿着清爽的小姐姐,拿着一个崭新的Mac笔记本向我走来,看着来势汹汹,我心想着肯定是技术大佬吧!但是我也是一个才华横溢的人,稳住我们能赢。原创 2020-06-08 09:14:45 · 78591 阅读 · 242 评论 -
腾讯面试居然跟我扯了半小时的CountDownLatch
一个长头发、穿着清爽的小姐姐,拿着一个崭新的Mac笔记本向我走来,看着来势汹汹,我心想着肯定是技术大佬吧!但是我也是一个才华横溢的人,稳住我们能赢。原创 2020-05-11 08:52:09 · 88212 阅读 · 490 评论 -
阿里面试居然跟我扯了半小时的CyclicBarrier
一个大腹便便,穿着格子衬衫的中年男子,拿着一个贴满Logo的Mac向我走来,看着稀少的头发,我心想着肯定是顶级技术大牛吧!但是我也是一个才华横溢的人,稳住我们能赢。原创 2020-04-20 10:03:13 · 18881 阅读 · 71 评论