Asp.Net Core Web Api内存泄漏问题

背景

使用Asp.Net Core Web Api框架开发网站中使用到了tcp socket通信,网站作为服务端开始tcp server,其他的客户端不断高速给它传输信息时,tcp server中读取信息每次申请的byte[]没有得到及时的释放,导致内存浪费越来越多,最终内存溢出,系统崩溃。

示例代码

Socket server = new Socket(SocketType.Stream, ProtocolType.Tcp);
IPAddress iPAddress = IPAddress.Parse("127.0.0.1");
IPEndPoint iPEndPoint = new IPEndPoint(iPAddress, 8080);
server.Bind(iPEndPoint);
server.Listen(3);
Task.Run(() =>
{Task.Run(() =>{while (true){Socket client = server.Accept();while (true){byte[] buffer = new byte[client.ReceiveBufferSize];int length = client.Receive(buffer);if (length > 0){string str = Encoding.ASCII.GetString(buffer, 0, length);Console.WriteLine(str);}else{client.Shutdown(SocketShutdown.Both);client.Close();client.Dispose();break;}}}});
});Console.ReadLine();

客户端使用网络调试助手进行模拟

结论

同样的代码,使用纯控制台项目框架搭建,则正常引发GC,每次申请的buffer数组都得到及时的释放。

而使用Asp.Net  Core Web Api框架搭建的项目中跑这个服务端代码,则是这样的,很少引发GC,没有及时回收buffer数组的无效内存空间

解决方案

右键项目文件->编辑它

PropertyGroup属性中添加一个子属性,保存,重新启动项目

<ServerGarbageCollection>false</ServerGarbageCollection>

再次观察GC引发的频率和内存使用状况,可以发现内存没有继续暴增了

GC模式

已经有大佬总结,再次不多赘述

讨论.NET Core 配置对GC 工作模式与内存的影响 - YOYOFx - 博客园 (cnblogs.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/190730.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

frp实现内网穿透(多端口穿透)

frp实现内网穿透 准备一个公网服务器&#xff08;腾讯、阿里、华为的云服务器&#xff09; 下载frp的安装包 下载对应系统的安装包&#xff0c;不要下错文件。 注意amd对应x86架构的系统 arm对应 arm架构系统&#xff08;macos&#xff09; 点击下载 查看文档将对应的安装包放…

设计模式-结构型模式之适配器设计模式

文章目录 一、结构型设计模式二、适配器模式 一、结构型设计模式 这篇文章我们来讲解下结构型设计模式&#xff0c;结构型设计模式&#xff0c;主要处理类或对象的组合关系&#xff0c;为如何设计类以形成更大的结构提供指南。 结构型设计模式包括&#xff1a;适配器模式&…

dockerfile指令学习

进入容器内部有2种方法。 1 docker run -it centos bash 退出后容器会挂了。 2 docker run -d --name my_nginx --restartalways -p 8989:80 nginx docker exec -it my_nginx bash --restartalways表示ngix挂了后会自动重启, -P 随机映射一个端口 dockerfile可以根…

flask 请求勾子实现 request_auth认证

from flask import g,request from comment.utils.tokens_pyjwt import verify_tokensdef jwt_request_auth():从请求(request)中获取token&#xff0c;并且验证token&#xff0c;验证成功之后把用户id保存到全局变量g中g.user_idNone #定义变量#前端代码是是把token携带请求头…

Visual Studio Code之自动补全的设置

步骤&#xff1a;1、打开Visual Studio Code&#xff1b;2、找到c_cpp_properties.json文件&#xff1b;3、将原来文件的内容清空&#xff0c;复制以下内容到此文件中即可&#xff1b; {"configurations": [{"name": "Linux","includePath…

基于Spring、SpringMVC、MyBatis的网上服装销售系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于Spring、SpringMVC、MyBatis的网上服…

Unity对接后台和加载图片

1、前言 在unity中与后台对接&#xff0c;用await在web端暂时还不支持&#xff0c;所以&#xff0c;协程成为比较好的通用方式&#xff0c;以下适用除post访问外的所有对接 2、对接后台 2.1、安装插件 首先我们需要用到Newtonsoft.dll&#xff0c;如果没有这个.dll的请跟着我…

C++-火车编组

Description 货运火车要在编组站根据挂常车厢到达目的地重新分组。 如果一列火车有4节车厢&#xff0c;经过编组后&#xff0c;车厢的编组顺序为3,2,4,1,你知道编组站是怎么编组的吗? 小明到编组站参观后发现编组站的铁路有很多岔道&#xff0c;火车在岔道上来来回回地开动…

Linux随记(七)

一、欧拉bclinux 21.10安装zabbix-5.0.37.tar.gz &#xff08;zbx-客户端&#xff09; #系统环境&#xff1a; BigCloud Enterprise Linux For Euler 21.10 LTS #软件信息&#xff1a; zabbix-5.0.37.tar.gz &#xff0c; pcre-devel-8.44-2.oe1.x86_64.rpm &#xff0c; inst…

LED屏幕信息安全如何预防?

随着科技的不断进步&#xff0c;LED屏幕在我们生活和工作中扮演着越来越重要的角色&#xff0c;然而&#xff0c;随之而来的是信息安全面临的挑战。为了有效预防LED屏幕信息的泄露和被盗取&#xff0c;我们需要采取一系列的安全措施。以下是一些建议&#xff1a; 物理安全措施&…

用C++和python混合编写数据采集程序?

之前看过一篇文章&#xff0c;主要阐述的就是多种语言混合编写爬虫程序&#xff0c;结合各种语言自身优势写一个爬虫代码是否行得通&#xff1f;觉得挺有意思的&#xff0c;带着这样的问题&#xff0c;我尝试着利用我毕生所学写了一段C和python混合爬虫程序&#xff0c;目前运行…

对于Windows就是找不到 环境变量 的解决

我认为将“我的电脑”从桌面上隐藏掉纯粹是傻逼行为 说下解决办法&#xff1a; 1. 找到文件资源管理器&#xff0c; 2. 右键点击“此电脑” -- 选择属性&#xff1a; 3. 进入属性界面&#xff0c;应该进入的是“关于”界面&#xff1a;选择“高级系统设置”&#xff1a; 4. 终…

ssm+vue的罪犯信息管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频&#xff1a; ssmvue的罪犯信息管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

STM32---MDK工程创建

本节我们带领大家学习如何新建一个寄存器库版本MDK的详细步骤&#xff1b; 由于51单片机的学习时&#xff0c;所涉及的寄存器很少&#xff0c;所以往往几个头文件、驱动文件就可以完成相关的功能&#xff0c;但是对于STM32来讲&#xff0c;涉及的寄存器、头文件等都很多&#…

导入seaborn的数据集方法load_datasets的问题

sns.load_dataset使用报错解决URLError: &#xff1c;urlopen error [Errno 11004] getaddrinfo failed&#xff1e;&#xff08;windows&#xff09;&#xff09; import seaborn as sns import matplotlib.pyplot as plt ​ # 使用Seaborn自带的数据集 tips sns.load_datas…

nodejs使用node-cron实现定时任务功能

ChatGPT国内站点&#xff1a;海鲸AI 在Node.js中&#xff0c;node-cron是一个轻量级的任务调度库&#xff0c;它允许你根据类似于Cron的时间表来安排任务的执行。如果你想要每十分钟执行一次任务&#xff0c;你可以按照以下步骤来设置&#xff1a; 安装node-cron&#xff1a; 如…

Filebeat使用指南

Filebeat介绍主要优势主要功能配置日志的解析Kibana中设置日志解析安装步骤安装Filebeat安装监控通过prometheus监控 Filebeat和Logstash的主要区别 Filebeat介绍 Filebeat是使用Golang实现的轻量型日志采集器&#xff0c;也是Elasticsearch stack的一员。它可以作为一个agent…

Kubernetes 使用插件扩展 kubectl

例子演示 编写 kubectl-foo &#xff0c;拷贝至 /usr/local/bin/ #!/bin/bash# 可选的参数处理 if [[ "$1" "version" ]] thenecho "1.0.0"exit 0 fi# 可选的参数处理 if [[ "$1" "config" ]] thenecho $KUBECONFIGexit…

CSS BFC特性和应用

目录 1&#xff0c;介绍2&#xff0c;BFC布局规则3&#xff0c;创建BFC4&#xff0c;BFC应用1&#xff0c;浮动子元素使父级高度坍塌2&#xff0c;非浮动元素被浮动元素覆盖3&#xff0c;margin 合并1&#xff0c;父子 margin 合并&#xff1a;父级和第1个/最后1个子元素2&…

深度学习之基于Django文本情感分析识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习在文本情感分析领域的应用已经取得了显著的进展。Django是一个流行的Python Web框架&#xff0c;它可以帮助…