代码改变世界

递归导致的StackOverflow的分析

2013-11-01 17:43 by hengxinyi, 3183 阅读, 1 推荐, 收藏, 编辑
摘要:递归在多层次遍历时尤为重要,这里我们不讲递归的实现,来谈谈递归的内存占用情况。如下代码,当我们运行时很简单,StackOverflowException瞬间抛出;这里确实是“瞬间”出错了,线程堆栈溢出;首先我们要理解,一个程序是在一个进程下运行的,进程下可以有很多线程执行,但是每一个线程能占用的内存控件是有限的,大约1M,当一个线程占用超过1M时,就会StackOverflow了;存放在线程堆栈上的有方法中的值类型变量,和引用变量的指针地址。理解这些能帮我们分下,递归为什么导致StackOverflow了。static void Main(string[] args){ Main(a... 阅读全文

VS让人纠结的Release和网站一键发布

2013-07-09 00:27 by hengxinyi, 1388 阅读, 0 推荐, 收藏, 编辑
摘要:这篇文章不是讲什么知识点,而是开发过程中遇到的问题,一:希望博友看到后知道的给解释一下;二:自己记录一下,下次有时间好好研究一下。说实话这个问题已经反反复复好几次了,每次都解决不了,都是已另一种方式处理的。首先,我使用访问数据库的是Ibatisnet,自认为对这个还是比较熟悉的,可是偏偏出来一些问题解决不了!一:Debug和Release两个不同的生成,调试分别报不同的错误。好像是Ibatisnet传的参数有问题,弄得我分别根据不同的参数写不同的sql。Release发布后还经常出现未将对象实例化的报错?Debug就没有问题!不知道到底哪里的问题。二:发布网站,使用微软的一键发布老是不成功,报 阅读全文

.NET对象占内存多少

2013-07-05 00:29 by hengxinyi, 3138 阅读, 4 推荐, 收藏, 编辑
摘要:一直有一个小小的疑惑——.NET一个对象或者一个集合占多少内存?有没有很快速的方法获取,而不是简单的估计分析对象大小?查了MSDN,和一些其他人的分析,得到解决是托管代码对象的大小无法真实的得到,因为存在托管对象转化成非托管的CLR优化。但我仍然不死心,非要弄个究竟!好吧,最终得到一些结果了。sizeof关键字,用于获取值类型的大小,如int(占4个字节),char(2个字节);并且sizeof 运算符仅适用于值类型,而不适用于引用类型。所以针对对象改关键字无法使用。查阅msdn,发现对象Marshal.SizeOf 方法,解释为返回类的非托管大小;但是仍然不能使用,因为针对的是非托管代码,如 阅读全文