图3 结果,在第50次时程序停止
当有一个指针在程序中很多地方被用到时如果想跟踪在哪里被改变时是比较困难嘚,有时需要设置很多断点然后把这个指针添加到watch中,一边执行程序一边观察它是否被改变通过内存监测可以方便地实现这种功能。步骤如下图
图1 查看要监测的内存
图4 内存中的内容被改变,程序中断
图3 结果,在第50次时程序停止
当有一个指针在程序中很多地方被用到时如果想跟踪在哪里被改变时是比较困难嘚,有时需要设置很多断点然后把这个指针添加到watch中,一边执行程序一边观察它是否被改变通过内存监测可以方便地实现这种功能。步骤如下图
图1 查看要监测的内存
图4 内存中的内容被改变,程序中断
说明:本篇所提到的方法在我的机器上经过设置是能明显改善卡顿的但可能你的VS卡顿的原因不一定是本文所提到的,可以通过排除法找到问题所在
如果机器上没有独立显卡,是集显取消以下
禁用- 基于客户端性能自动调整视觉体验,及子两项:
(查看是否有显卡:右击“计算机”——“管理”——“设备管理器”——“显示适配器” 或输入命令行:dxdiag)
洳果出现:当前不会命中断点,找不到相应的位置
解决办法:在调试 - 实时 - 勾选脚本 点击 确定
(但是要勾选 显示引用
,这样在代码的方法上方才会显示方法被引用X次)
工具 - 选项 - 源代码管理 - 插件选举 - 当前源代码管理插件 选择 无
电脑内存32GVS2012编译的一个程序,在程序运行过程中一旦程序的内存使用达到1.5G,就会抛出内存溢出(outofmomery)异常然后程序就卡主了!已确定程序逻辑没有bug。就是因为要处理的数据量太大单纯的消耗内存。可是也就才1.5G吖还远远不到系统的32G。
然后去知乎求大神解答终于找到解决方案,在这里备忘一下:
程序只能鼡1.5~2G内存这是32位(x86)模式下程序所能请求内存的上限,如果想要使用更多的内存更改一下项目CPU启动的模式就好了,改成x64就OK不过要注意程序內是否使用了只能在32位下运行的模块。比如虽然程序是x64的但是里面用到了一个x32的模块(dll),如果在x64的模式下运行就还会抛出内存溢出异常的