#include <map>
#include <stdio.h>
using namespace std; struct SrsMemoryObject
{
void* ptr;
std::string category;
int size;
}; std::map<void*, SrsMemoryObject*> _srs_ptrs; void srs_memory_watch(void* ptr, string category, int size)
{
SrsMemoryObject* obj = NULL; std::map<void*, SrsMemoryObject*>::iterator it;
if ((it = _srs_ptrs.find(ptr)) != _srs_ptrs.end()) {
obj = it->second;
} else {
obj = new SrsMemoryObject();
_srs_ptrs[ptr] = obj;
} obj->ptr = ptr;
obj->category = category;
obj->size = size;
} void srs_memory_unwatch(void* ptr)
{
std::map<void*, SrsMemoryObject*>::iterator it;
if ((it = _srs_ptrs.find(ptr)) != _srs_ptrs.end()) {
SrsMemoryObject* obj = it->second;
srs_freep(obj); _srs_ptrs.erase(it);
}
} void srs_memory_report()
{
printf("srs memory watch leak report:\n"); int total = 0;
std::map<void*, SrsMemoryObject*>::iterator it;
for (it = _srs_ptrs.begin(); it != _srs_ptrs.end(); ++it) {
SrsMemoryObject* obj = it->second;
printf(" %s: %#"PRIx64", %dB\n", obj->category.c_str(), (int64_t)obj->ptr, obj->size);
total += obj->size;
} printf("%d objects leak %dKB.\n", (int)_srs_ptrs.size(), total / 1024);
printf("@remark use script to cleanup for memory watch: ./etc/init.d/srs stop\n");
}

服务端负载监控-参考srs服务器源码的更多相关文章

  1. 不用找了,比较全的signalR例子已经为你准备好了(2)---JqGrid 服务端刷新方式-注释详细-DEMO源码下载

    上次用客户端进行数据刷新的方式,和官方的Demo实现存在差异性,今天花了一点时间好好研究了一下后台时时刷新的方式.将写的代码重新update了一次,在这之前找过好多的资料,发现都没有找到好的例子,自己 ...

  2. 记录一些服务端术语和搭建web服务器

    菜单快捷导航 服务端常用术语 搭建web服务器和配置虚拟主机 记录一些服务端方面的常用术语 1.CS架构和BS架构 1.1 CS架构 CS(Client/Server),基于安装包类型的桌面或手机软件 ...

  3. Golang构建HTTP服务(一)--- net/http库源码笔记

    搭建一个简单的Go Web服务器 Go语言标准库 - net/http 在学习Go语言有一个很好的起点,Go语言官方文档很详细,今天我们学习的Go Web服务器的搭建就需要用到Go语言官方提供的标准库 ...

  4. rsyn实现服务器源码同步

    近期技术总监提出,要建立预生产环境,代码实现灰度发布.需要多台服务器源码保持一致. 实施步骤 1.安装rsyn服务端并添加环境变量. 2.安装客户端并配置环境变量. 3.更改配置文件并开放防火墙端口. ...

  5. tiny web服务器源码分析

    tiny web服务器源码分析 正如csapp书中所记,在短短250行代码中,它结合了许多我们已经学习到的思想,如进程控制,unix I/O,套接字接口和HTTP.虽然它缺乏一个实际服务器所具备的功能 ...

  6. 【分布式微服务企业快速架构】SpringCloud分布式、微服务、云架构快速开发平台源码

    鸿鹄云架构[系统管理平台]是一个大型 企业.分布式.微服务.云架构的JavaEE体系快速研发平台,基于 模块化.微服务化.原子化.热部署的设计思想,使用成熟领先的无商业限制的主流开源技术 (Sprin ...

  7. c++ 网络编程(二) linux 下多进程socket通信 多个客户端与单个服务端交互代码实现回声服务器

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9612820.html 锲子-- 预备知识优雅的关闭套接字连接: 基于TCP的半关闭 TCP中的 ...

  8. 《Linux多线程服务端编程》笔记——多线程服务器的适用场合

    如果要在一台多核机器上提供一种服务或执行一个任务,可用的模式有 运行一个单线程的进程 运行一个多线程的进程 运行多个单线程的进程 运行多个多线程的进程 这些模式之间的比较已经是老生常谈,简单地总结 模 ...

  9. docker-compose 快速部署Prometheus之服务端并监控ceph cluster 使用钉钉webhook 报警

    现在环境是这样: ceph 4台: 192.168.100.21  ceph-node1 192.168.100.22  ceph-node2 192.168.100.23  ceph-node3 1 ...

随机推荐

  1. 锐捷RG-S2951G-EV3 ACL 禁止端口

    (config)ip access-list extended 199 (config)10 deny tcp any any eq 2425 (config)20 deny udp any any ...

  2. Java基础00-字符串14

    1. API 1.1 API概述 2. String String常用类的常用方法 String字符串变量的创建: 声明:    String 变量名; String str; 声明并初始化: Str ...

  3. [刘阳Java]_eayui-pagination分页组件_第5讲

    分页组件也是很基本的应用,这里我只给出一段简单的代码 关键注意一点:分页组件可以在上面添加buttons按钮,或者自定义分页组件的外观.这些内容需要自行的查看EasyUI的API文档 <!DOC ...

  4. SLAM的数学基础(1):什么是方差,有什么意义?

    小红班上有两组同学的数学考试分数为: 第一组:小红:100分,小明:60分,小宇:20分 第二组:小蓝:70分,小华:60分,小杰:50分 那么很容易算出,第一组的平均分是60分,第二组的平均分也是6 ...

  5. python + pytest 基本使用方法(Fixture)

    #firtures通常用来对测试方法.测试函数.测试类和整个测试文件进行初始化或还原测试环境# setup_module/teardown_module:在当前文件中,在所有测试用例执行之前与之后执行 ...

  6. 高性能内存图数据库RedisGraph(三)

    这篇文章,我将介绍截止目前,RedisGraph的最新版本(v2.4)对Cypher语言的支持情况. 1.模式(patterns) RedisGraph已支持Cypher中所有的模式. 2.类型(ty ...

  7. 给KVM添加新的磁盘

    给KVM添加新的磁盘 两种方案 1 添加虚拟磁盘文件 2 添加物理磁盘 硬件配置: 物理主机(宿主机):foundation 物理主机磁盘情况: 我们有三块物理磁盘,sda.sdb和sdc(这里都是S ...

  8. vulnhub-DC:1靶机渗透记录

    准备工作 在vulnhub官网下载DC:1靶机https://www.vulnhub.com/entry/dc-1,292/ 导入到vmware 打开kali准备进行渗透(ip:192.168.200 ...

  9. 第十二篇 -- 如何向MFC对话框添加菜单

    1.如何在基于对话框的MFC中添加菜单:https://blog.csdn.net/u012273127/article/details/71293088 步骤: 资源文件处右击Add Resourc ...

  10. HashSet 和 HashMap 的比较

    HashMap 和 HashSet 都是 collection 框架的一部分,它们让我们能够使用对象的集合.collection 框架有自己的接口和实现,主要分为 Set 接口,List 接口和 Qu ...