- 本文,我们就来从源码角度深度解析线程池是如何优雅的退出程序的。首先,我们来看下ThreadPoolExecutor类中的shutdown()方法。 本文,我们就来从源码角度深度解析线程池是如何优雅的退出程序的。首先,我们来看下ThreadPoolExecutor类中的shutdown()方法。
- 一般家庭网络的公网IP都是不固定的,而我又想通过域名来访问自己服务器上的应用,也就是说:需要通过将域名绑定到动态IP上来实现这个需求。于是乎,我开始探索实现的技术方案。 一般家庭网络的公网IP都是不固定的,而我又想通过域名来访问自己服务器上的应用,也就是说:需要通过将域名绑定到动态IP上来实现这个需求。于是乎,我开始探索实现的技术方案。
- @[TOC] 基础概念吞吐量:用户代码执行时间/(用户代码执行时间+垃圾回收时间)响应时间:STW(stop the word)越短,响应时间越好首先要确定追求什么?吞吐量优先还是响应时间优先?还是 在满足一定的响应时间的情况下,要求达到多大的吞吐量.吞吐量优先的一般选择(PS+PO)垃圾回收器响应时间优先一般选用G1垃圾回收器 什么是调优根据需求进行JVM规划和预调优优化JVM运行坏境解决... @[TOC] 基础概念吞吐量:用户代码执行时间/(用户代码执行时间+垃圾回收时间)响应时间:STW(stop the word)越短,响应时间越好首先要确定追求什么?吞吐量优先还是响应时间优先?还是 在满足一定的响应时间的情况下,要求达到多大的吞吐量.吞吐量优先的一般选择(PS+PO)垃圾回收器响应时间优先一般选用G1垃圾回收器 什么是调优根据需求进行JVM规划和预调优优化JVM运行坏境解决...
- 前言 什么是垃圾java中,内存运行时区域中的程序计数器、虚拟机栈、本地方法栈3个区域生命周期随着线程的生存而生存,而堆和方法区被各线程共享,这些占用空间而不被任何对象引用的对象,我们称之为垃圾(Garbage),而垃圾收集器(Garbage Collector)的工作即是通过一些列算法对这些垃圾进行清理。 分代收集算法分代收集算法是基于JVM内存分代模型的一种算法,是目前大部分垃圾收集器... 前言 什么是垃圾java中,内存运行时区域中的程序计数器、虚拟机栈、本地方法栈3个区域生命周期随着线程的生存而生存,而堆和方法区被各线程共享,这些占用空间而不被任何对象引用的对象,我们称之为垃圾(Garbage),而垃圾收集器(Garbage Collector)的工作即是通过一些列算法对这些垃圾进行清理。 分代收集算法分代收集算法是基于JVM内存分代模型的一种算法,是目前大部分垃圾收集器...
- 一、内存分类各位小伙伴,到上一篇博文为止,我们的内存模型相关知识就已经讲完了!不知道大家吸收了多少,这里我们简单的来回顾一下吧!在博文《JVM进阶(三):内存分配与回收策略》中讲到,内存基本分为JAVA栈、本地方法栈、堆和方法区。首先栈存放的是基本类型变量,局部变量,和对象的引用,他在内存中是一块连续的区域,有大小限制,是由系统自动分配的,因此它的读写速度比较快,而且会自动释放掉为该变量所... 一、内存分类各位小伙伴,到上一篇博文为止,我们的内存模型相关知识就已经讲完了!不知道大家吸收了多少,这里我们简单的来回顾一下吧!在博文《JVM进阶(三):内存分配与回收策略》中讲到,内存基本分为JAVA栈、本地方法栈、堆和方法区。首先栈存放的是基本类型变量,局部变量,和对象的引用,他在内存中是一块连续的区域,有大小限制,是由系统自动分配的,因此它的读写速度比较快,而且会自动释放掉为该变量所...
- 一、前言在上一篇博文《JVM进阶(九):年轻代收集器》我们介绍了JAVA新生代收集器,本篇博文我们要讲的就是关于老年代的一些收集器。老年代存活的一般是大对象以及生命很顽强的对象,因此新生代的复制算法很明显不能适应该区域的特性,所以老年代采用的是“标记-清除-整理”算法(前期博文《JVM进阶(三):内存分配与回收策略》有详细讨论过)。 二、收集器Serila Old收集器:该收集器是Seri... 一、前言在上一篇博文《JVM进阶(九):年轻代收集器》我们介绍了JAVA新生代收集器,本篇博文我们要讲的就是关于老年代的一些收集器。老年代存活的一般是大对象以及生命很顽强的对象,因此新生代的复制算法很明显不能适应该区域的特性,所以老年代采用的是“标记-清除-整理”算法(前期博文《JVM进阶(三):内存分配与回收策略》有详细讨论过)。 二、收集器Serila Old收集器:该收集器是Seri...
- 一、前言继续上一篇博文《JVM进阶(八):Stop The World》所讲的,STW即GC时候的停顿时间,他会暂停我们程序中的所有线程。如果STW所用的时间长而且次数多的话,那么我们整个系统稳定性以及可用性将大大降低。因此我们在必要的时候需要对虚拟机进行调优,调优的主要目标之一就是降低STW的时间,也就是减少Full GC的次数。那么这里我们从调优的角度来分析各个收集器的优势与不足。 二... 一、前言继续上一篇博文《JVM进阶(八):Stop The World》所讲的,STW即GC时候的停顿时间,他会暂停我们程序中的所有线程。如果STW所用的时间长而且次数多的话,那么我们整个系统稳定性以及可用性将大大降低。因此我们在必要的时候需要对虚拟机进行调优,调优的主要目标之一就是降低STW的时间,也就是减少Full GC的次数。那么这里我们从调优的角度来分析各个收集器的优势与不足。 二...
- 一、前言小伙伴还记得《JVM进阶(七):从 GC 日志分析堆内存》中我们留下的一个问题吗?什么是停顿类型!经过前面的学习,我们知道JVM垃圾回收首先是需要经过标记的。对象被标记后就会根据不同的区域采用不同的收集方法。看上去很完美的一件事情,其实并不然。 二、STW大家有没有想过这样一件事情,当虚拟机完成两次标记后,便确认了可以回收的对象。但是,垃圾回收并不会阻塞我们程序的线程,他是与当前程... 一、前言小伙伴还记得《JVM进阶(七):从 GC 日志分析堆内存》中我们留下的一个问题吗?什么是停顿类型!经过前面的学习,我们知道JVM垃圾回收首先是需要经过标记的。对象被标记后就会根据不同的区域采用不同的收集方法。看上去很完美的一件事情,其实并不然。 二、STW大家有没有想过这样一件事情,当虚拟机完成两次标记后,便确认了可以回收的对象。但是,垃圾回收并不会阻塞我们程序的线程,他是与当前程...
- 一、前言在前期博文《JVM进阶(二)——初识JAVA堆》中讲解了虚拟机中的堆,堆是整个内存模型中占用最大的一部分,而且不是连续的。当有需要分配内存的时候,一般有两个方法分配,指针碰撞和空闲列表。该部分的内存回收是由虚拟机的垃圾收集器GC进行管理的。刚刚粗略的回忆了上一博文所讲的内容,而这一章我们的重点还在堆上面。之前有简单的提到过新生代和老年代,今天就给大家好好梳理下这部分。 二、堆类型堆... 一、前言在前期博文《JVM进阶(二)——初识JAVA堆》中讲解了虚拟机中的堆,堆是整个内存模型中占用最大的一部分,而且不是连续的。当有需要分配内存的时候,一般有两个方法分配,指针碰撞和空闲列表。该部分的内存回收是由虚拟机的垃圾收集器GC进行管理的。刚刚粗略的回忆了上一博文所讲的内容,而这一章我们的重点还在堆上面。之前有简单的提到过新生代和老年代,今天就给大家好好梳理下这部分。 二、堆类型堆...
- 一、前言众所周知,在java中内存主要分为以下几类:寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制。栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)堆:存放所有new出来的对象。静态域:存放静态成员(static定义的)。常量池:存放字符串常量和基本类型常量(public... 一、前言众所周知,在java中内存主要分为以下几类:寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制。栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)堆:存放所有new出来的对象。静态域:存放静态成员(static定义的)。常量池:存放字符串常量和基本类型常量(public...
- 一、前言若想自己编写的Java程序高效运行,以及进行正确、高效的异常诊断,JVM是不得不谈的一个话题。本”JVM进阶“专栏大部分内容均来源于经典书籍《深入理解Java虚拟机》。 二、栈存储言归正传,本文重点从虚拟机内存模型(运行时数据区域)入手。先看下图:这是一张比较官方的虚拟机模型图,今天讲的就是虚线框中栈的部分。栈是我们最常用的内存区域。它主要用来存放基本类型变量,局部变量以及对象的引... 一、前言若想自己编写的Java程序高效运行,以及进行正确、高效的异常诊断,JVM是不得不谈的一个话题。本”JVM进阶“专栏大部分内容均来源于经典书籍《深入理解Java虚拟机》。 二、栈存储言归正传,本文重点从虚拟机内存模型(运行时数据区域)入手。先看下图:这是一张比较官方的虚拟机模型图,今天讲的就是虚线框中栈的部分。栈是我们最常用的内存区域。它主要用来存放基本类型变量,局部变量以及对象的引...
- 前言随着渠道API接入的渠道越来越多, 用户量也在日益递增, 由于渠道API本身的业务复杂性, 以及依赖的中台服务之多, 很有可能出现的问题会带来巨大的影响; 只是通过常用的单元测试, 集成测试, 性能测试等来验证服务的稳定性已经远远不够; 因此去年在平台的混沌工程基础上完成了渠道API和流量变现平台在mysql延迟,mq延迟,请求延迟, 异常等场景下的故障注入演练; 在演练中提前识别了潜在... 前言随着渠道API接入的渠道越来越多, 用户量也在日益递增, 由于渠道API本身的业务复杂性, 以及依赖的中台服务之多, 很有可能出现的问题会带来巨大的影响; 只是通过常用的单元测试, 集成测试, 性能测试等来验证服务的稳定性已经远远不够; 因此去年在平台的混沌工程基础上完成了渠道API和流量变现平台在mysql延迟,mq延迟,请求延迟, 异常等场景下的故障注入演练; 在演练中提前识别了潜在...
- 一、前言应聘后端开发岗位面试过程中,有关JVM的问题必不可少,此篇博文主要梳理有关JVM工作原理、收集器有关内容。 二、java 内存与内存溢出 2.1 JVM 分区及作用程序计数器(线程私有)当前线程执行字节码的信号指示器。(每个线程都会在程序计数器中存储其指令,从而实现线程切换后恢复到正确的执行位置)虚拟机栈(栈,线程私有)每个方法执行(开始到结束就是这个方法的生命周期)都会创建一个... 一、前言应聘后端开发岗位面试过程中,有关JVM的问题必不可少,此篇博文主要梳理有关JVM工作原理、收集器有关内容。 二、java 内存与内存溢出 2.1 JVM 分区及作用程序计数器(线程私有)当前线程执行字节码的信号指示器。(每个线程都会在程序计数器中存储其指令,从而实现线程切换后恢复到正确的执行位置)虚拟机栈(栈,线程私有)每个方法执行(开始到结束就是这个方法的生命周期)都会创建一个...
- 本文主要介绍JDK21中的分代ZGC详解,包括染色指针、内存屏障等核心概念及ZGC JVM参数介绍 ZGC(Z Garbage Collector)是Java平台上的一种垃圾收集器,它是由Oracle开发的,旨在解决大堆的低延迟垃圾收集问题。ZGC是一种并发的分代垃圾收集器,它主要针对具有大内存需求和低停顿时间要求的应用程序。 本文主要介绍JDK21中的分代ZGC详解,包括染色指针、内存屏障等核心概念及ZGC JVM参数介绍 ZGC(Z Garbage Collector)是Java平台上的一种垃圾收集器,它是由Oracle开发的,旨在解决大堆的低延迟垃圾收集问题。ZGC是一种并发的分代垃圾收集器,它主要针对具有大内存需求和低停顿时间要求的应用程序。
- 我们在32位多核CPU的计算机上以多线程的方式读写long类型的共享变量时,线程已经将变量成功写入了内存,但是重新读取出来的数据和之前写入的数据不一致,这到底是为什么呢? 我们在32位多核CPU的计算机上以多线程的方式读写long类型的共享变量时,线程已经将变量成功写入了内存,但是重新读取出来的数据和之前写入的数据不一致,这到底是为什么呢?
上滑加载中
推荐直播
-
智能观测进化论系列沙龙(第一期)
2025/02/28 周五 14:00-16:30
华为及外部讲师团
本期直播就智能化可观测技术的融合与创新、落地与实践、瓶颈与未来等业界关心的话题进行深入探讨。
回顾中 -
聚焦Deepseek,洞察开发者生态发展
2025/02/28 周五 19:00-20:30
蒋涛 csdn创始人
深入剖析Deepseek爆发后,中国开发者生态潜藏的巨大发展潜能与未来走向,精准提炼出可供大家把握的时代机遇,干货满满,不容错过。
回顾中
热门标签