原调试debugwindbg死锁deadlock 前言项目里的一个升级程序偶尔会死锁,查看dump后发现是死在了ShellExecuteExW里。经验少,不知道为什么,于是在高端调试论坛里发帖求助,链接如下http://advdbg.org/forums/6520/ShowPost.aspx根据张银... ...
分类:
数据库 时间:
2020-01-06 22:41:38
阅读次数:
149
原调试debugwindbg死锁deadlock 前言最近我们的程序在退出时会卡住,调查发现是在卸载dll时死锁了。大概流程是这样的:我们的dll在加载的时候会创建一个工作线程,在卸载的时候,会设置退出标志并等待之前开启的工作线程结束。为了研究这个经典的死锁问题,写了一个模拟程序,用到的dump文件... ...
分类:
数据库 时间:
2020-01-06 22:40:03
阅读次数:
135
我刻意的制造了一段会溢出的代码。 通过下图的leak suspects分析是可以看出gc root的。比较代码和图中的b a。 还有其他的方式可以分析,点击dominator tree可以获取到持有大对象的线程,然后在其上也可以执行gcroot的分析,如下图。 ...
分类:
其他好文 时间:
2020-01-06 19:21:34
阅读次数:
206
在单片机中由于内存资源紧张,不可能给每个任务分配专有的内存区,尤其是涉及到通讯模块的程序,对内存的使用更是敏感。为此开发一个简单的内存管理库,对以后的开发还是有着不小的帮助的。 功能实现:内存动态分配、内存动态释放、内存碎片回收 heap.c // 内存划分:申请的一块内存分为两部分,一部分用于存储 ...
分类:
其他好文 时间:
2020-01-06 17:44:55
阅读次数:
79
相同点 dump 和 dumps 都实现了序列化 load 和 loads 都实现反序列化 变量从内存中变成可存储或传输的过程称之为序列化序列化是将对象状态转化为可保存或可传输格式的过程。 变量内容从序列化的对象重新读到内存里称之为反序列化反序列化是流转换为对象。 区别 1. load 和 load ...
分类:
Web程序 时间:
2020-01-05 15:57:05
阅读次数:
145
1.为什么要使用线程池避免频繁地创建和销毁线程,达到线程对象的重用。另外,使用线程池还可以根据项目灵活地控制并发的数目。2.java中如何获取到线程dump文件死循环、死锁、阻塞、页面打开慢等问题,打线程dump是最好的解决问题的途径。所谓线程dump也就是线程堆栈,获取到线程堆栈有两步:1)获取到线程的pid,可以通过使用jps命令,在Linux环境下还可以使用ps-ef|grepjava2)打
分类:
编程语言 时间:
2020-01-05 10:05:51
阅读次数:
95
堆排序(Heap Sort)是指利用堆这种数据结构所设计的一种排序算法。因此,学习堆排序之前,有必要了解堆! 我们知道,堆分为"最大堆"和"最小堆"。最大堆通常被用来进行"升序"排序,而最小堆通常被用来进行"降序"排序。鉴于最大堆和最小堆是对称关系,理解其中一种即可。本文将对最大堆实现的升序排序进行 ...
分类:
编程语言 时间:
2020-01-04 22:29:55
阅读次数:
93
/* * java运行内存: * 堆(heap):存储的全是对象,每个对象都包含一个与之对应的class信息 * 只有一个heap,被所有线程共享,heap中不存放基本数据类型和对象引用,只放对象本身 * 栈:每个线程都有属于自己的栈(用户态栈),栈中保存基本数据类型的对象和自定义对象的引用,这个引 ...
分类:
编程语言 时间:
2020-01-04 12:15:42
阅读次数:
82
在Python中长久的保存字符串、列表、字典等数据,方便以后使用,而不是简单的放入内存中。 这个时候Pickle模块就派上用场了,它可以将对象转换为一种可以传输或存储的格式。 一、dump()方法 pickle.dumps(obj, file) 注释:序列化对象,将对象obj保存到文件file中去。 ...
分类:
编程语言 时间:
2020-01-04 11:08:49
阅读次数:
86
环境:centos7、mysql 备份: mysqldump u root p yhc /home/yhc.sql root为用户名,yhc为数据库名,执行命令会将数据库备份到home路径下的yhc.sql 备份一张表: mysqldump u root p yhc user /home/user. ...
分类:
数据库 时间:
2020-01-03 23:03:53
阅读次数:
99