c#程序定期把内存信息记录到log日志示例

设立一个定时器tmrMonitor,该定时器会在程序运行时不断把程序的占用内存和占用线程数写到LOG\MEM目录下。
我设置的定时器间隔是3000毫秒,记录后的信息可以用来分析一段时间内程序的运行状况,比如内存泄漏问题。

代码如下:

/// <summary>
/// Timer组件tmrMonitor的Tick事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tmrMonitor_Tick(object sender, EventArgs e)
{
    string LogAddress = Environment.CurrentDirectory + "\\Log";
    if (!Directory.Exists(LogAddress + "\\MEM")) //需要System.IO
    {
        Directory.CreateDirectory(LogAddress + "\\MEM");
    }

LogAddress = String.Concat(LogAddress, "\\MEM\\",
        DateTime.Now.Year, '-', DateTime.Now.Month, '-',
        DateTime.Now.Day, "_mem.log");

//需要 System.Diagnostics;
    Process currentProcess = Process.GetCurrentProcess();

StreamWriter sw = new StreamWriter(LogAddress, true);
    sw.WriteLine('[' + DateTime.Now.ToString() + ']');
    sw.WriteLine("进程标识: " + currentProcess.Id.ToString());
    sw.WriteLine("进程名称: " + currentProcess.ProcessName.ToString());
    sw.WriteLine("占用内存: " +
        (currentProcess.WorkingSet64 / 1024).ToString() + "KB");
    sw.WriteLine("线程数量: " + currentProcess.Threads.Count.ToString());
    sw.WriteLine();
    sw.Close();
}

(0)

相关推荐

  • C#实现程序单例日志输出功能

    对于一个完整的程序系统,一个日志记录是必不可少的.可以用它来记录程序在运行过程中的运行状态和报错信息.比如,那些不想通过弹框提示的错误,程序执行过程中捕获的异常等. 首先,在你的解决方案中,适当的目录中新建一个类,比如 LogManager: 编写如下代码: /// <summary> /// 日志管理 /// </summary> public class LogManager { private string _logDir; // 日志文件存放目录 private stati

  • C#控制台程序使用Log4net日志组件详解

    C#控制台程序使用Log4net日志组件,供大家参考,具体内容如下 1.Log4net一般都不陌生,但是在配置上不同类型的项目又不相同的地方比如C#控制台程序和C# MVCWeb项目,拿控制台项目为例 项目源码在文章底部 2.首先创建一个控制台程序,引入Log4net.dll --使用NuGet 3.进行一些简单的配置,在App.config文件中配置,如果大家没有App.config文件,可以通过在解决方案中,添加新建项→应用程序配置文件,进行添加. <?xml version="1.0

  • 将文件夹下所有文件输出到日志文件中 c#递归算法学习示例

    算法文章,总是带给我们无穷的思考和兴趣,一个问题,多种解决方法,看你如何去思考它,对于标题所引出的问题,我觉得,使用递归是比较有效的方法,当然递归还有很多使用场合,如树型分类列表的操作等等. 注意: 使用递归时,初学者要特别注意的就是"出口",必须为递归提供一个出口,否则你的内存就要溢出了,呵呵,memory overflow大家肯定都见过,都是从那时候过来的,呵呵. 代码中的递归: 复制代码 代码如下: static void GetFiles(List<string>

  • C#实现将程序运行信息写入日志的方法

    本文实例讲述了C#实现将程序运行信息写入日志的方法.分享给大家供大家参考.具体如下: 1.LogManager类 class LogManager { static object locker = new object(); /// <summary> /// 重要信息写入日志 /// </summary> /// <param name="logs">日志列表,每条日志占一行</param> public static void Wri

  • c#程序定期把内存信息记录到log日志示例

    设立一个定时器tmrMonitor,该定时器会在程序运行时不断把程序的占用内存和占用线程数写到LOG\MEM目录下.我设置的定时器间隔是3000毫秒,记录后的信息可以用来分析一段时间内程序的运行状况,比如内存泄漏问题. 复制代码 代码如下: /// <summary>/// Timer组件tmrMonitor的Tick事件/// </summary>/// <param name="sender"></param>/// <para

  • 微信小程序实现提交input信息到后台的方法示例

    本文实例讲述了微信小程序实现提交input信息到后台的方法.分享给大家供大家参考,具体如下: wxml文件: <!-- 用户名事件绑定 --> <view class="fl_form"> <text>您的姓名</text> <input type="text" placeholder='请输入您的姓名' value="{{userName}}" bindblur='userNameInput

  • 微信小程序实现获取用户信息并存入数据库操作示例

    本文实例讲述了微信小程序实现获取用户信息并存入数据库操作.分享给大家供大家参考,具体如下: 微信小程序获取用户信息简单,但是在存入自己服务器数据库的过程中研究了一天多的时间,并且网上搜索不到该资源,故发出来供大家参考. index.js Page({ data: { nickName: "微信账号登录", avatarUrl:"./user-unlogin.png", }, onLoad: function () { var that = this; var nic

  • 记录PHP错误日志 display_errors与log_errors的区别

    display_errors 错误回显,一般常用语开发模式,但是很多应用在正式环境中也忘记了关闭此选项.错误回显可以暴露出非常多的敏感信息,为攻击者下一步攻击提供便利.推荐关闭此选项. display_errors = On 开启状态下,若出现错误,则报错,出现错误提示 dispaly_errors = Off 关闭状态下,若出现错误,则提示:服务器错误.但是不会出现错误提示 log_errors 在正式环境下用这个就行了,把错误信息记录在日志里.正好可以关闭错误回显. 对于PHP开发人员来说,

  • linux查看主板内存槽与内存信息的命令dmidecode方法

    1.查看内存槽数.那个槽位插了内存,大小是多少 dmidecode|grep -P -A5 "Memory\s+Device"|grep Size|grep -v Range 2.查看最大支持内存数 dmidecode|grep -P 'Maximum\s+Capacity' 3.查看槽位上内存的速率,没插就是unknown. dmidecode|grep -A16 "Memory Device"|grep 'Speed' 其实以上数值就是通过dmidecode命令

  • C语言实现获取内存信息并输出的实例

    C语言实现获取内存信息并输出的实例 实现实例代码: headfile.h #include <stdio.h> #include <stdlib.h> #include <time.h> #define TRUE 1 #define FALSE 0 #define MAX 10000 typedef int KeyType; typedef int OtherType; typedef struct { KeyType key; OtherType other_data

  • Android获取系统储存以及内存信息的方法(二)

    Android获取储存信息以及内存信息可以用adb命令查看. adb查看系统内存信息以及储存信息: 命令:adb shell cat /proc/meminfo 代码: private static final String FILENAME_PROC_MEMINFO = "/proc/meminfo"; /** * 获取手机内存总大小 * @return */ public static String getTotalMemorySize() { try { FileReader f

  • 使用python获取CPU和内存信息的思路与实现(linux系统)

    大家都知道,linux里一切皆为文件,在linux/unix的根目录下,有个/proc目录,这个/proc 是一种内核和内核模块用来向进程(process)发送信息的机制(所以叫做"/proc"),这个伪文件系统允许与内核内部数据结构交互,获取有关进程的有用信息,在运行中(on the fly)改变设置(通过改变内核参数).与其他文件系统不同,/proc 存在于内存而不是硬盘中.proc 文件系统提供的信息如下: •进程信息:系统中的任何一个进程,在 proc 的子目录中都有一个同名的

  • C# WinForm应用程序降低系统内存占用方法总结

    背景: 微软的 .NET FRAMEWORK 现在可谓如火如荼了.但是,.NET 一直所为人诟病的就是"胃口太大",狂吃内存,虽然微软声称 GC 的功能和智能化都很高,但是内存的回收问题,一直存在困扰,尤其是 winform 程序,其主要原因是因为.NET程序在启动时,是需要由JIT动态编译并加载的,这个加载会把所有需要的资源都加载进来,很多资源是只有启动时才用的. 以XP 系统为例子,程序启动后,打开任务管理器,会看到占用的内存量比较大,你把程序最小化,会发现该程序占用的内存迅速减小

  • C/C++程序开发中实现信息隐藏的三种类型

    无论是模块化设计,还是面向对象设计,还是分层设计,实现子系统内部信息的对外隐藏都是最关键的内在要求.以本人浅显的经验,把信息隐藏按照程度的不同分成(1)不可见不可用(2)可见不可用(3)可见可用. 1 不可见不可用 就是说模块内部的变量.结构体.类定义对外部而已完全隐藏,外部对此一无所知.常用的实现方法就是利用不透明指针,请参见我的博文C语言开发函数库时利用不透明指针对外隐藏结构体细节. 这种方法同样适用于C++语言,一种可能的实现方式为面向接口编程. 头文件 IMyClass.h class

随机推荐