草庐IT

GC_concurrent

全部标签

谁说.NET没有GC调优?只改一行代码就让程序不再占用内存

经常看到有群友调侃“为什么搞Java的总在学习JVM调优?那是因为Java烂!我们.NET就不需要搞这些!”真的是这样吗?今天我就用一个案例来分析一下。昨天,一位学生问了我一个问题:他建了一个默认的ASP.NETCoreWebAPI的项目,也就是那个WeatherForecast的默认项目模板,然后他把默认的生成5条数据的代码,改成了生成150000条数据,其他代码没变,如下:publicIEnumerableGet(){returnEnumerable.Range(1,150000).Select(index=>newWeatherForecast{Date=DateOnly.FromDat

谁说.NET没有GC调优?只改一行代码就让程序不再占用内存

经常看到有群友调侃“为什么搞Java的总在学习JVM调优?那是因为Java烂!我们.NET就不需要搞这些!”真的是这样吗?今天我就用一个案例来分析一下。昨天,一位学生问了我一个问题:他建了一个默认的ASP.NETCoreWebAPI的项目,也就是那个WeatherForecast的默认项目模板,然后他把默认的生成5条数据的代码,改成了生成150000条数据,其他代码没变,如下:publicIEnumerableGet(){returnEnumerable.Range(1,150000).Select(index=>newWeatherForecast{Date=DateOnly.FromDat

一文了解.Net的CLR、GC内存管理

一文了解.Net的CLR、GC内存管理微软官方文档对内存管理和CLR的概述什么是托管代码?托管代码就是执行过程交由运行时管理的代码。在这种情况下,相关的运行时称为公共语言运行时(CLR),不管使用的是哪种实现(例如Mono、.NETFramework或.NETCore/.NET5+)。CLR负责提取托管代码、将其编译成机器代码,然后执行它。除此之外,运行时还提供多个重要服务,例如自动内存管理、安全边界、类型安全,等等。托管代码是使用可在.NET上运行的一种高级语言(例如C#、VisualBasic、F#等)编写的。使用相应的编译器编译以这些语言编写的代码时,无法获得机器代码,而是获得中间语言代

一文了解.Net的CLR、GC内存管理

一文了解.Net的CLR、GC内存管理微软官方文档对内存管理和CLR的概述什么是托管代码?托管代码就是执行过程交由运行时管理的代码。在这种情况下,相关的运行时称为公共语言运行时(CLR),不管使用的是哪种实现(例如Mono、.NETFramework或.NETCore/.NET5+)。CLR负责提取托管代码、将其编译成机器代码,然后执行它。除此之外,运行时还提供多个重要服务,例如自动内存管理、安全边界、类型安全,等等。托管代码是使用可在.NET上运行的一种高级语言(例如C#、VisualBasic、F#等)编写的。使用相应的编译器编译以这些语言编写的代码时,无法获得机器代码,而是获得中间语言代

从历代GC算法角度刨析ZGC

作者:京东科技文涛前言本文所有介绍仅限于HotSpot虚拟机,本文先介绍了垃圾回收的必要手段,基于这些手段讲解了历代垃圾回收算法是如何工作的,每一种算法不会讲的特别详细,只为读者从算法角度理解工作原理,从而引出ZGC,方便读者循序渐进地了解。GC是GarbageCollection的缩写,顾名思义垃圾回收机制,即当需要分配的内存空间不再使用的时候,JVM将调用垃圾回收机制来回收内存空间。那么JVM的垃圾机制是如何工作的呢?第一步识别出哪些空间不再使用(识别并标记出哪些对象已死);第二步回收不再使用空间(清除已死对象)判断对象是否已死判断对象是否已死通常有两种方式,引用计数法和可达性分析法引用计

从历代GC算法角度刨析ZGC

作者:京东科技文涛前言本文所有介绍仅限于HotSpot虚拟机,本文先介绍了垃圾回收的必要手段,基于这些手段讲解了历代垃圾回收算法是如何工作的,每一种算法不会讲的特别详细,只为读者从算法角度理解工作原理,从而引出ZGC,方便读者循序渐进地了解。GC是GarbageCollection的缩写,顾名思义垃圾回收机制,即当需要分配的内存空间不再使用的时候,JVM将调用垃圾回收机制来回收内存空间。那么JVM的垃圾机制是如何工作的呢?第一步识别出哪些空间不再使用(识别并标记出哪些对象已死);第二步回收不再使用空间(清除已死对象)判断对象是否已死判断对象是否已死通常有两种方式,引用计数法和可达性分析法引用计

Android 变量生命周期、变量内存释放机制、GC触发时机研究、内存优化建议

Android的GC机制是可达性回收,具体本文就不再具体阐述了,本文只分析android系统什么时候会触发GC,以及监听Object对象被回收的时机:先看下面的代码的注释,先明白我说的全局变量局部变量说的是什么意思classDetailActivity:AppCompatActivity(){//这个house就是全局变量privatevarhouse:House?=nulloverridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setContentView(R.layout.activ

Android 变量生命周期、变量内存释放机制、GC触发时机研究、内存优化建议

Android的GC机制是可达性回收,具体本文就不再具体阐述了,本文只分析android系统什么时候会触发GC,以及监听Object对象被回收的时机:先看下面的代码的注释,先明白我说的全局变量局部变量说的是什么意思classDetailActivity:AppCompatActivity(){//这个house就是全局变量privatevarhouse:House?=nulloverridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setContentView(R.layout.activ

《Java 虚拟机原理》6.2 实战 — GC 详解

1.利用Grafana视图定位GC从SaaS业务监到视图进程监控,下列选择微服务servicesA。①查看视图JVMHeap,选择G1OldGen如下图可知,6个实例在11点左右进行了GC,回收了部分老年代。image-20220420153732819.png②选择其中实例,确定GC的具体时间如下图所示,选择实例10.244.1.117,确定GC回收老年代的时间范围10:52~10:53image-20220420153809951.pngimage-20220420153923081.png2.进入容器查看JVM参数和GC日志①查看JVM参数如下所示,利用G1作为垃圾收集器,Heap的最大

《Java 虚拟机原理》6.2 实战 — GC 详解

1.利用Grafana视图定位GC从SaaS业务监到视图进程监控,下列选择微服务servicesA。①查看视图JVMHeap,选择G1OldGen如下图可知,6个实例在11点左右进行了GC,回收了部分老年代。image-20220420153732819.png②选择其中实例,确定GC的具体时间如下图所示,选择实例10.244.1.117,确定GC回收老年代的时间范围10:52~10:53image-20220420153809951.pngimage-20220420153923081.png2.进入容器查看JVM参数和GC日志①查看JVM参数如下所示,利用G1作为垃圾收集器,Heap的最大