vs2010java内存泄露例子检测工具哪个好

点击查看大图
LeakDiag是微软官方发布的一款内存泄漏检测工具(memory leak),免费的,不需要和待检测的源程序一起编译,能够统计一段时间内的内存泄漏大小以及指出发生内存泄漏的源代码的行数。检测内存泄漏的工具有很多,大致分为二种,一种是嵌入程序的,需要修改源码;一种是attach到进程,实时监测的。LeakDiag内存泄漏检测软件采用了微软的Detours技术,拦截指定内存分配的调用并跟踪各种调用栈,可以精确找到内存泄露一直到代码行我们甚至可以看见请求分配的代码行。
下载吧温馨提示:
用户在安装时候需要注意:务必按照默认路径c:\leakdiag安装,否则可能出问题。
你可能感兴趣的软件
Resource Hackerr(reshacker)是一款免费软件,用于查看,修改,添加和删除 Win32 可执行文件的资源。内置了一个内部资源编译器和反编译器。Resource Hacker可以被用来:1.查看Win32可执行..
下载吧提供一鹤软件公司发布的AAuto语言开发工具正式版,AAuto语言开发工具界面清新简洁友好,用户能在较短的时间内掌握软件的使用。AAuto语言以LAs cript脚本语言为基础并基于更为通用的C系语法打造的新一代编程语言,主要面向小型轻量快速开发应用,
Poedit从名字就能看出来,专门用做.po文件编辑的工具。Poedit内置于wxWidgets工具中,可以在所有它支持的平台上运行(通过测试的有Unix下的GTK+以及Windows)。它的目的是提供更方便的办法编辑目...
易语言是一个自主开发,适合国情,不同层次不同专业的人员易学易用的汉语编程语言。易语言降低了广大电脑用户编程的门槛,尤其是根本不懂英文或者英文了解很少的用户...
XAMPP是一个易于安装的Apache发行版,其中包含MariaDB、PHP和Perl。仅仅需要下载并启动安装程序。就这么简单。
UltraEdit-32是能够满足你一切编辑需要功能强大的文本编辑器,ultraedit可以编辑文本、十六进制、ASCII码,可以取代记事本,内建英文单字检查、C++及VB指令突显,可同时编辑多个文件...
YaraEditor是一款Yara引擎工作测试工具。YaraEditor能够测试Yara引擎的工作,软件带有一个现代,圆滑和组织良好的界面,包括分为两个选项卡的主窗口,即构建和相应
ComMonitor是一款简单易用的串口调试软件,用于监测com端口。支持20串口, 自动轮发, 调试, 共享程序, 3个手动发送区, 帧过滤接收。
YaraEditor是一款Yara引擎工作测试工具。YaraEditor能够测试Yara引擎的工作,软件带有一个现代,圆滑和组织良好的界面,包括分为两个选项卡的主窗口,即构建和相应
EmEditor Professional是一款简单好用的文本编辑器,EmEditor支持多种配置,自定义颜色、字体、工具栏、快捷键设置,可以调整行距,避免中文排列过于紧密,具有选择文本列块的功能...
TortoiseSVN是Subversion版本控制系统的一个免费开源客户端,可以超越时间的管理文件和目录。TortoiseSVN文件保存在中央版本库,除了能记住文件和目录的每次修改以外
Mockplus是一款简洁快速的原型图设计工具。Mockplus适合快速迭代的开发模式,无需学习、快速上手、功能强劲。支持安卓App、iOSApp,Windows/MACOS桌面程序和Web原型设计。
LeakDiag下载地址
1777307次下载
Eclipse 64位版(eclipse下载64位) V4.6官方版
Microsoft Visual Studio 2010旗舰版(vs2010中文旗舰版下载)官方中文版
Bloodshed Dev-C++(C++开发工具)V5.11.0中文免费版
Microsoft Visual Studio 2012旗舰版(VS2012中文版下载)官方中文版
Microsoft SQL Server 2012(sql2012下载)官方简体中文版
Microsoft Visual Studio 2008专业版(vs2008中文版下载)官方中文版
Microsoft Visual Studio 2013旗舰版(VS2013中文版下载)官方中文版
Microsoft SQL Server 2000下载(SQL2000)官方简体中文版
STEP 7 MicroWIN(PLC S7-200编程软件官方免费下载)V4.0.6.35官方版
1777307次下载
Microsoft SQL Server 2000下载(SQL2000)官方简体中文版
易语言(e语言易语言下载)V5.8官方版
Microsoft Visual Studio 2010旗舰版(vs2010中文旗舰版下载)官方中文版
Navicat for MySQL(MySQL数据库管理工具下载)32位 V11.2.15中文版
MySQL数据库(MySQL Server数据库软件下载) 5.7.18官方正式版
Microsoft Visual Studio 2012旗舰版(VS2012中文版下载)官方中文版
Bloodshed Dev-C++(C++开发工具)V5.11.0中文免费版
Microsoft Visual Studio 2013旗舰版(VS2013中文版下载)官方中文版
Microsoft Visual Studio 2008专业版(vs2008中文版下载)官方中文版
很多人都喜欢在b站哔哩哔哩上观看视频,不单是因为可以提前看到一些视频资源,B站的一些弹幕、评论的玩法也是被网友们玩坏了!下面下载吧小编带来了b站哔哩哔哩怎么使用的教程合集!希望能帮到你啦!
闲鱼二手app是淘宝官方出品的二手市场应用,淘宝二手市场官方手机客户端软件闲鱼,推荐给喜欢上闲鱼淘宝二手市场购物或买卖的机友,淘宝出品起码有一定的保障,不需要担心安全问题,二手交易嘛仁者见仁智者见智,眼睛擦亮点也是可以找到好东西的。
抖音短视频app,这里汇聚全球潮流音乐,搭配舞蹈、表演等内容形式,还有超多原创特效、滤镜、场景切换帮你一秒变大片,为你打造刷爆朋友圈的魔性短视频。脑洞有多大,舞台就有多大!好玩的人都在这儿!
日常生活中,因为各种原因我们常常丢失随身设备中的数据,怎么高效实用的恢复成了困扰许多用户的问题,今天下载吧小编为大家带来一款强大的苹果手机恢复软件,果粉们新技能还不get起来!开心手机恢复大师是一款强大的苹果数据恢复软件,操作简单,兼容Windows和Mac平台,支持iOS设备微信聊天记录恢复及短信,通讯录,备忘录,照片等删
不管是出门旅游还是出差第一件事情就是查看外当天气如何,现在许多手机的桌面天气预报软件就可以帮助你快速查看天气了,但有些手机自带的天气预报可能不能满足大家的需要,所以在这里小编为大家整理了几款功能强大且齐全的ios天气预报软件,希望里面有你喜欢的一款。
春节在外和小伙伴聚会,家里的群突然有红包抢,没看手机错过了?不用怕,有了下面这些手机抢红包神奇,再也不怕抢不到红包了!
元宵是春节后第一个寓意团圆的节日,更是中国的情人节!马上就到了2018年的元宵节了,元宵佳节,一片喜庆,小编精选了元宵必备的手机应用,希望小伙伴们能够喜欢!
现在在都市中越来越多的人喜欢到户外去运动去探险!今天下载吧小编就为大家整理推荐了几款运动必备的手机软件,有需要的小伙伴快来下载吧体验一番吧!在线提问 问题标题: 问题描述:(简陋的描述会导致问题被最后回答、没有针对性回答甚至无法解答。请确保问题描述的足够清楚。)Pages: 1/3
主题 : 在VS下,大家用什么来检测内存泄漏啊?
可可豆: * CB
威望: * 点
在线时间: (时)
注册时间: *
最后登录: *
发自: Web Page
在VS下,大家用什么来检测内存泄漏啊?&&&
没有Mac,在windows下用VS2010发现用Visual Leak Detector检测不出retain()和release()的泄漏,只对new和delete有反应。
有没有好的工具推荐下啊?谢谢分享....
可可豆: * CB
威望: * 点
在线时间: (时)
注册时间: *
最后登录: *
发自: Web Page
[code]////////////////////////////////////////////////////////////////////////////////
//
$Id: vld.h,v 1.1
08:44:48 chengjing Exp $
//
//
Visual Leak Detector (Version 1.0)
//
Copyright (c) 2005 Dan Moulding
//
//
This prog you can redistribute it and/or modify
//
it under the terms of the GNU Lesser General Public License as published by
//
the Free Software F either version 2.1 of the License, or
//
(at your option) any later version.
//
//
This program is distributed in the hope that it will be useful,
//
but WITHOUT ANY WARRANTY; without even the implied warranty of
//
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the
//
GNU Lesser General Public License for more details.
//
//
You should have received a copy of the GNU Lesser General Public License
//
alo if not, write to the Free Software
//
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
See COPYING.txt for the full terms of the GNU Lesser General Public License.
//
////////////////////////////////////////////////////////////////////////////////
#pragma once
#ifdef _DEBUG
////////////////////////////////////////////////////////////////////////////////
//
//
Configuration Options
//
// Configuration flags
#define VLD_CONFIG_AGGREGATE_DUPLICATES 0x1
#define VLD_CONFIG_SELF_TEST
0x2
#define VLD_CONFIG_SHOW_USELESS_FRAMES
0x4
#define VLD_CONFIG_START_DISABLED
#ifndef VLDBUILD
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
// If VLD_AGGREGATE_DUPLICATES is defined, then duplicated leaks (those that
// have the same size and call stack as a previously identified leak) are not
// shown in detail in the memory leak report. Instead, only a count of the
// number of matching duplicate leaks is shown along with the detailed
// information from the first such leak encountered.
#ifdef VLD_AGGREGATE_DUPLICATES
#define VLD_FLAG_AGGREGATE_DUPLICATES VLD_CONFIG_AGGREGATE_DUPLICATES
#else
#define VLD_FLAG_AGGREGATE_DUPLICATES 0x0
#endif // VLD_AGGREGATE_DUPLICATES
// If VLD_MAX_DATA_DUMP is defined, then the amount of data shown in user-data
// memory dumps will be limited to the specified number of bytes.
#ifdef VLD_MAX_DATA_DUMP
unsigned long _VLD_maxdatadump = VLD_MAX_DATA_DUMP;
#else
unsigned long _VLD_maxdatadump = 0
#endif // VLD_MAX_DATA_DUMP
// If VLD_MAX_TRACE_FRAMES is defined, then the number of frames traced for each
// allocated memory block when walking the stack will be limited to the
// specified number of frames.
#ifdef VLD_MAX_TRACE_FRAMES
unsigned long _VLD_maxtraceframes = VLD_MAX_TRACE_FRAMES;
#else
unsigned long _VLD_maxtraceframes = 0
#endif // VLD_MAX_TRACE_FRAMES
// If VLD_SELF_TEST is defined, then Visual Leak Detector will perform a memory
// leak self-test, by intentionally leaking memory, to ensure that it is able to
// correctly detect memory leaks internal to Visual Leak Detector.
#ifdef VLD_SELF_TEST
#define VLD_FLAG_SELF_TEST VLD_CONFIG_SELF_TEST
#else
#define VLD_FLAG_SELF_TEST 0x0
#endif // VLD_SELF_TEST
// If VLD_SHOW_USELESS_FRAMES is defined, then all frames traced will be
// displayed, even frames internal to the heap and Visual Leak Detector.
#ifdef VLD_SHOW_USELESS_FRAMES
#define VLD_FLAG_SHOW_USELESS_FRAMES VLD_CONFIG_SHOW_USELESS_FRAMES
#else
#define VLD_FLAG_SHOW_USELESS_FRAMES 0x0
#endif // VLD_SHOW_USELESS_FRAMES
// If VLD_START_DISABLED is defined, then Visual Leak Detector will initially
// be disabled for all threads.
#ifdef VLD_START_DISABLED
#define VLD_FLAG_START_DISABLED VLD_CONFIG_START_DISABLED
#else
#define VLD_FLAG_START_DISABLED 0x0
#endif // VLD_START_DISABLED
// Initialize the configuration flags based on defined preprocessor macros.
unsigned _VLD_configflags = VLD_FLAG_AGGREGATE_DUPLICATES | VLD_FLAG_SELF_TEST |
VLD_FLAG_SHOW_USELESS_FRAMES | VLD_FLAG_START_DISABLED;
#ifdef __cplusplus
}
#endif // __cplusplus
////////////////////////////////////////////////////////////////////////////////
//
//
Linker Directives
//
// Link with the appropriate Visual Leak Detector library. One of: multithreaded
// DLL, multithreaded static, or single threaded. All three link with debug
// versions of the CRT.
#ifdef _DLL
#pragma comment (lib, "vldmtdll.lib")
#else
#ifdef _MT
#pragma comment (lib, "vldmt.lib")
#else
#pragma comment (lib, "vld.lib")
#endif // _MT
#endif // _DLL
// Force a symbolic reference to the global VisualLeakDetector class object from
// the library. This enusres that the object is linked with the program, even
// though nobody directly references it outside of the library.
#pragma comment(linker, "/include:?visualleakdetector@@3VVisualLeakDetector@@A")
#endif // VLDBUILD
#endif // _DEBUG[/code]百度搜索vld
可可豆: * CB
威望: * 点
在线时间: (时)
注册时间: *
最后登录: *
发自: Web Page
[quote][size=2][color=#999999]juckerpp 发表于
23:43[/color] [url=forum.php?mod=redirect&goto=findpost&pid=8562&ptid=3525][img]static/image/common/back.gif[/img][/url][/size]
百度搜索vld[/quote]我用的就是这个 vld 2.2.3
但是我这有个问题:
CCSprite *sprite = CCSprite::spriteWithFile("Button1.png");
sprite->retain();
后面没有调用sprite->release()不报leak:
No memory leaks detected.
Visual Leak Detector is now exiting.
但是如果这样写:
CCSprite *sprite = new CCS
sprite->autorelease();
sprite->retain();
没有调用release的话就会报:
WARNING: Visual Leak Detector detected memory leaks!
---------- Block 3 at 0x: 456 bytes ----------
Call Stack:
f:cocos2d-xzlsr_3_bearzlsr_3_bearclasseshelloworldscene.cpp (45): Zlsr_3_bear.win32.exe!HelloWorld::init + 0xA bytes
........
.........
Visual Leak Detector detected 1 memory leak (492 bytes).
Largest number used: 900 bytes.
Total allocations: 900 bytes.
Visual Leak Detector is now exiting.
这是什么情况?
可可豆: * CB
威望: * 点
在线时间: (时)
注册时间: *
最后登录: *
发自: Web Page
因为你new了一个新的对象,如果你用的是spritewithxxxx,就等于将内存交给了cocos2d-x去管理
如果你使用 sprite = new CCspirte的话,那么就等于内存交给你自己管理
你注意看CCsprite的头文件描述,我记得明确说明了他是一个autorelease 的obj,所以关于sprite的内存管理你可以完全交给cocos2d-x来运作
可可豆: * CB
威望: * 点
在线时间: (时)
注册时间: *
最后登录: *
发自: Web Page
[quote][size=2][color=#999999]juckerpp 发表于
16:15[/color] [url=forum.php?mod=redirect&goto=findpost&pid=8691&ptid=3525][img]static/image/common/back.gif[/img][/url][/size]
因为你new了一个新的对象,如果你用的是spritewithxxxx,就等于将内存交给了cocos2d-x去管理
如果你使用 spr ...[/quote]但是我看CCSprite源码里面spriteWithXXX也是通过先new一个对象出来,然后在给加个autorelease再返回的:
CCSprite* CCSprite::spriteWithFile(const char *pszFileName)
{
CCSprite *pobSprite = new CCSprite();
if (pobSprite && pobSprite->initWithFile(pszFileName))
pobSprite->autorelease();
return pobS
CC_SAFE_DELETE(pobSprite);
return NULL;
}
跟自己去:
CCSprite *sprite = new CCS
sprite->autorelease();
中间有什么差别吗? 新手初学...求指导...非常谢谢
可可豆: * CB
威望: * 点
在线时间: (时)
注册时间: *
最后登录: *
发自: Web Page
这中间的过程我还没细研究哈,因为我知道他内部肯定会各种析构,所以我一般会用
spritewithfile或者spritewithframename来建立我的精灵
狠少new
可可豆: * CB
威望: * 点
在线时间: (时)
注册时间: *
最后登录: *
发自: Web Page
[quote][size=2][color=#999999]juckerpp 发表于
21:40[/color] [url=forum.php?mod=redirect&goto=findpost&pid=8722&ptid=3525][img]static/image/common/back.gif[/img][/url][/size]
这中间的过程我还没细研究哈,因为我知道他内部肯定会各种析构,所以我一般会用
spritewithfile或者spritew ...[/quote]嗯嗯 我也只是觉得:
CCSprite *sprite = CCSprite::spriteWithFile("Button1.png");
sprite->retain();
没手动release一次的话,vld应该给我一个leak的提示。。。
可可豆: * CB
威望: * 点
在线时间: (时)
注册时间: *
最后登录: *
发自: Web Page
还是没搞懂.....
可可豆: * CB
威望: * 点
在线时间: (时)
注册时间: *
最后登录: *
发自: Web Page
CCSprite *sprite = CCSprite::spriteWithFile("Button1.png");
sprite->retain();
retain代表你要使用一段之后,再交给cocos2d-x的内存池去释放这个对象,也就是说,你retain了一下,cocos2d-x后台就会+1,这个+1代表你的使用次数
也就是说你下文如果
sprite->xxxxx();
那么这个count就会-1
然后cocos2d-x的内存管理机制检测到count为0的时候,就会认定他为autorelease的对象,pool就会将它release掉,所以你在vld里估计是不会有leak的
可可豆: * CB
威望: * 点
在线时间: (时)
注册时间: *
最后登录: *
发自: Web Page
[quote]是如果这样写:
CCSprite *sprite = new CCS
sprite->autorelease();
sprite->retain();
没有调用release的话就会报:
WARNING: Visual Leak Detector detected memory leaks!
---------- Block 3 at 0x: 456 bytes ----------
Call Stack:
f:cocos2d-xzlsr_3_bearzlsr_3_bearclasseshelloworldscene.cpp (45): Zlsr_3_bear.win32.exe!HelloWorld::init + 0xA bytes
........
.........
Visual Leak Detector detected 1 memory leak (492 bytes).
Largest number used: 900 bytes.
Total allocations: 900 bytes.
Visual Leak Detector is now exiting.
[/quote]
我的理解是,首先你告诉pool,这是一个交给你自动管理的对象。
然后你又让pool将它的count+1
然后pool就认为你还要用。。
然后报leak了。。
你可以做一个测试
1.就是retain之后在用一次
2.retain之后不用
看看分别是否报leak。。
总之他的内存pool的原理就是给每个对象加一个count来管理
Pages: 1/3
关注本帖(如果有新回复会站内信通知您)
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 关注CVP公众号
扫一扫 浏览移动版386 条评论分享收藏感谢收起6添加评论分享收藏感谢收起blogs.msdn.com/b/tess/archive//debug-diag-1-2-beta.aspx 赞同 4添加评论分享收藏感谢收起

我要回帖

更多关于 java内存泄露例子 的文章

 

随机推荐