发布网友 发布时间:2022-04-29 04:21
共1个回答
热心网友 时间:2023-10-11 04:36
cpu资源耗尽:估计是机器没有反应了,键盘,鼠标,以及网络等等。这个在windows上经常看见,特别是中了毒。进程id耗尽:没法创建新的进程了,串口或者telnet都没法创建了。硬盘耗尽:机器要死了,交换内存没法用,日志也没法用了,死是很正常的。内存泄漏或者内存耗尽:新的连接无法创建,free的内存比较少。发生内存泄漏的程序很多,但是要想产生一定的后果,就需要这个进程是无限循环的,是个服务进程。当然,内核也是无限循环的,所以,如果内核发生了内存泄漏,情况就更加不妙。内存泄漏是一种很难定位和跟踪的错误,目前还没看到有什么好用的工具(当然,用户空间有一些工具,有静态分析的,也会动态分析的,但是找内核的内存泄漏,没有好的开源工具)内存泄漏和对象的引用计数有很大的关系,再加上c/c++都没有自动的垃圾回收机制,如果没有手动释放内存,问题就会出现。如果要避免这个问题,还是要从代码上入手,良好的编码习惯和规范,是避免错误的不二法门。一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存。应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。(附)部分内存泄漏检测工具1.ccmalloc-Linux和Solaris下对C和C++程序的简单的使用内存泄漏和malloc调试库。2.Dmalloc-DebugMallocLibrary.3.ElectricFence-Linux分发版中由BrucePerens编写的malloc()调试库。4.Leaky-Linux下检测内存泄漏的程序。5.LeakTracer-Linux、Solaris和HP-UX下跟踪和分析C++程序中的内存泄漏。6.MEMWATCH-由JohanLindh编写,是一个开放源代码C语言内存错误检测工具,主要是通过gcc的precessor来进行。7.Valgrind-DebuggingandprofilingLinuxprograms,aimingatprogramswritteninCandC++.8.KCachegrind-AvisualizationtoolfortheprofilingdatageneratedbyCachegrindandCalltree.9.IBMRationalPurifyPlus-帮助开发人员查明C/C++、托管.NET、Java和VB6代码中的性能和可靠性错误。PurifyPlus将内存错误和泄漏检测、应用程序性能描述、代码覆盖分析等功能组合在一个单一、完整的工具包中。10.ParasoftInsure++-针对C/C++应用的运行时错误自动检测工具,它能够自动监测C/C++程序,发现其中存在着的内存破坏、内存泄漏、指针错误和I/O等错误。并通过使用一系列独特的技术(SCI技术和变异测试等),彻底的检查和测试我们的代码,精确定位错误的准确位置并给出详细的诊断信息。能作为MicrosoftVisualC++的一个插件运行。11.CompuwareDevPartnerforVisualC++BoundsCheckerSuite-为C++开发者设计的运行错误检测和调试工具软件。作为MicrosoftVisualStudio和C++6.0的一个插件运行。12.ElectricSoftwareGlowCode-包括内存泄漏检查,codeprofiler,函数调用跟踪等功能。给C++和.Net开发者提供完整的错误诊断,和运行时性能分析工具包。13.CompuwareDevPartnerJavaEdition-包含Java内存检测,代码覆盖率测试,代码性能测试,线程死锁,分布式应用等几大功能模块。14.QuestJProbe-分析Java的内存泄漏。15.ej-technologiesJProfiler-一个全功能的Java剖析工具,专用于分析J2SE和J2EE应用程序。它把CPU、执行绪和内存的剖析组合在一个强大的应用中。16.BEAJRockit-用来诊断Java内存泄漏并指出根本原因,专门针对Intel平台并得到优化,能在Intel硬件上获得最高的性能。热心网友 时间:2023-10-11 04:36
cpu资源耗尽:估计是机器没有反应了,键盘,鼠标,以及网络等等。这个在windows上经常看见,特别是中了毒。进程id耗尽:没法创建新的进程了,串口或者telnet都没法创建了。硬盘耗尽:机器要死了,交换内存没法用,日志也没法用了,死是很正常的。内存泄漏或者内存耗尽:新的连接无法创建,free的内存比较少。发生内存泄漏的程序很多,但是要想产生一定的后果,就需要这个进程是无限循环的,是个服务进程。当然,内核也是无限循环的,所以,如果内核发生了内存泄漏,情况就更加不妙。内存泄漏是一种很难定位和跟踪的错误,目前还没看到有什么好用的工具(当然,用户空间有一些工具,有静态分析的,也会动态分析的,但是找内核的内存泄漏,没有好的开源工具)内存泄漏和对象的引用计数有很大的关系,再加上c/c++都没有自动的垃圾回收机制,如果没有手动释放内存,问题就会出现。如果要避免这个问题,还是要从代码上入手,良好的编码习惯和规范,是避免错误的不二法门。一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存。应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。(附)部分内存泄漏检测工具1.ccmalloc-Linux和Solaris下对C和C++程序的简单的使用内存泄漏和malloc调试库。2.Dmalloc-DebugMallocLibrary.3.ElectricFence-Linux分发版中由BrucePerens编写的malloc()调试库。4.Leaky-Linux下检测内存泄漏的程序。5.LeakTracer-Linux、Solaris和HP-UX下跟踪和分析C++程序中的内存泄漏。6.MEMWATCH-由JohanLindh编写,是一个开放源代码C语言内存错误检测工具,主要是通过gcc的precessor来进行。7.Valgrind-DebuggingandprofilingLinuxprograms,aimingatprogramswritteninCandC++.8.KCachegrind-AvisualizationtoolfortheprofilingdatageneratedbyCachegrindandCalltree.9.IBMRationalPurifyPlus-帮助开发人员查明C/C++、托管.NET、Java和VB6代码中的性能和可靠性错误。PurifyPlus将内存错误和泄漏检测、应用程序性能描述、代码覆盖分析等功能组合在一个单一、完整的工具包中。10.ParasoftInsure++-针对C/C++应用的运行时错误自动检测工具,它能够自动监测C/C++程序,发现其中存在着的内存破坏、内存泄漏、指针错误和I/O等错误。并通过使用一系列独特的技术(SCI技术和变异测试等),彻底的检查和测试我们的代码,精确定位错误的准确位置并给出详细的诊断信息。能作为MicrosoftVisualC++的一个插件运行。11.CompuwareDevPartnerforVisualC++BoundsCheckerSuite-为C++开发者设计的运行错误检测和调试工具软件。作为MicrosoftVisualStudio和C++6.0的一个插件运行。12.ElectricSoftwareGlowCode-包括内存泄漏检查,codeprofiler,函数调用跟踪等功能。给C++和.Net开发者提供完整的错误诊断,和运行时性能分析工具包。13.CompuwareDevPartnerJavaEdition-包含Java内存检测,代码覆盖率测试,代码性能测试,线程死锁,分布式应用等几大功能模块。14.QuestJProbe-分析Java的内存泄漏。15.ej-technologiesJProfiler-一个全功能的Java剖析工具,专用于分析J2SE和J2EE应用程序。它把CPU、执行绪和内存的剖析组合在一个强大的应用中。16.BEAJRockit-用来诊断Java内存泄漏并指出根本原因,专门针对Intel平台并得到优化,能在Intel硬件上获得最高的性能。热心网友 时间:2023-10-11 04:36
cpu资源耗尽:估计是机器没有反应了,键盘,鼠标,以及网络等等。这个在windows上经常看见,特别是中了毒。进程id耗尽:没法创建新的进程了,串口或者telnet都没法创建了。硬盘耗尽:机器要死了,交换内存没法用,日志也没法用了,死是很正常的。内存泄漏或者内存耗尽:新的连接无法创建,free的内存比较少。发生内存泄漏的程序很多,但是要想产生一定的后果,就需要这个进程是无限循环的,是个服务进程。当然,内核也是无限循环的,所以,如果内核发生了内存泄漏,情况就更加不妙。内存泄漏是一种很难定位和跟踪的错误,目前还没看到有什么好用的工具(当然,用户空间有一些工具,有静态分析的,也会动态分析的,但是找内核的内存泄漏,没有好的开源工具)内存泄漏和对象的引用计数有很大的关系,再加上c/c++都没有自动的垃圾回收机制,如果没有手动释放内存,问题就会出现。如果要避免这个问题,还是要从代码上入手,良好的编码习惯和规范,是避免错误的不二法门。一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存。应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。(附)部分内存泄漏检测工具1.ccmalloc-Linux和Solaris下对C和C++程序的简单的使用内存泄漏和malloc调试库。2.Dmalloc-DebugMallocLibrary.3.ElectricFence-Linux分发版中由BrucePerens编写的malloc()调试库。4.Leaky-Linux下检测内存泄漏的程序。5.LeakTracer-Linux、Solaris和HP-UX下跟踪和分析C++程序中的内存泄漏。6.MEMWATCH-由JohanLindh编写,是一个开放源代码C语言内存错误检测工具,主要是通过gcc的precessor来进行。7.Valgrind-DebuggingandprofilingLinuxprograms,aimingatprogramswritteninCandC++.8.KCachegrind-AvisualizationtoolfortheprofilingdatageneratedbyCachegrindandCalltree.9.IBMRationalPurifyPlus-帮助开发人员查明C/C++、托管.NET、Java和VB6代码中的性能和可靠性错误。PurifyPlus将内存错误和泄漏检测、应用程序性能描述、代码覆盖分析等功能组合在一个单一、完整的工具包中。10.ParasoftInsure++-针对C/C++应用的运行时错误自动检测工具,它能够自动监测C/C++程序,发现其中存在着的内存破坏、内存泄漏、指针错误和I/O等错误。并通过使用一系列独特的技术(SCI技术和变异测试等),彻底的检查和测试我们的代码,精确定位错误的准确位置并给出详细的诊断信息。能作为MicrosoftVisualC++的一个插件运行。11.CompuwareDevPartnerforVisualC++BoundsCheckerSuite-为C++开发者设计的运行错误检测和调试工具软件。作为MicrosoftVisualStudio和C++6.0的一个插件运行。12.ElectricSoftwareGlowCode-包括内存泄漏检查,codeprofiler,函数调用跟踪等功能。给C++和.Net开发者提供完整的错误诊断,和运行时性能分析工具包。13.CompuwareDevPartnerJavaEdition-包含Java内存检测,代码覆盖率测试,代码性能测试,线程死锁,分布式应用等几大功能模块。14.QuestJProbe-分析Java的内存泄漏。15.ej-technologiesJProfiler-一个全功能的Java剖析工具,专用于分析J2SE和J2EE应用程序。它把CPU、执行绪和内存的剖析组合在一个强大的应用中。16.BEAJRockit-用来诊断Java内存泄漏并指出根本原因,专门针对Intel平台并得到优化,能在Intel硬件上获得最高的性能。