程序员经常会遇到的死锁情况有哪些?

程序员经常会遇到的死锁情况有哪些?,第1张

第一,内存泄漏

C/C++程序还可能产生另一个指针问题:丢失对已分配内存的引用。当内存是在子程序中被分 配时,通常会出现这种问题,其结果是程序从子程序中返回时不会释放内存。如此一来,对已分配的内存的引用就会丢失,只要 *** 作系统还在运行中,则进程就会一 直使用该内存。这样的结果是,曾占用更多的内存的程序会降低系统性能,直到机器完全停止工作,才会完全清空内存。

第二,C指针错误

用C或C++编写的程序,如Web服务器API模块,有可能导致系统的崩溃,因为只要间接引 用指针(即,访问指向的内存)中出现一个错误,就会导致 *** 作系统终止所有程序。另外,使用了糟糕的C指针的Java模拟量(analog)将访问一个空的 对象引用。Java中的空引用通常不会导致立刻退出JVM,但是前提是程序员能够使用异常处理方法恰当地处理错误。在这方面,Java无需过多的关注,但 使用Java对可靠性进行额外的度量则会对性能产生一些负面影响。

第三,数据库中的临时表不够用

许多数据库的临时表(cursor)数目都是固定的,临时表即保留查询结果的内存区域。在临时表中的数据都被读取后,临时表便会被释放,但大量同时进行的查询可能耗尽数目固定的所有临时表。这时,其他的查询就需要列队等候,直到有临时表被释放时才能再继续运行。

第四,线程死锁

由多线程带来的性能改善是以可靠性为代价的,主要是因为这样有可能产生线程死锁。线程死锁 时,第一个线程等待第二个线程释放资源,而同时第二个线程又在等待第一个线程释放资源。我们来想像这样一种情形:在人行道上两个人迎面相遇,为了给对方让 道,两人同时向一侧迈出一步,双方无法通过,又同时向另一侧迈出一步,这样还是无法通过。双方都以同样的迈步方式堵住了对方的去路。假设这种情况一直持续 下去,这样就不难理解为何会发生死锁现象了。

第五,磁盘已满

导致系统无法正常运行的最可能的原因是磁盘已满。一个好的网络管理员会密切关注磁盘的使用情况,隔一定的时间,就需要将磁盘上的一些负载转存到备份存储介质中(例如磁带)。

日志文件会很快用光所有的磁盘空间。Web服务器的日志文件、SQL*Net的日志文件、 JDBC日志文件,以及应用程序服务器日志文件均与内存泄漏有同等的危害。可以采取措施将日志文件保存在与 *** 作系统不同的文件系统中。日志文件系统空间已 满时Web服务器也会被挂起,但机器自身被挂起的几率已大大减低。

第六,服务器超载

Netscape Web服务器的每个连接都使用一个线程。Netscape Enterprise Web服务器会在线程用完后挂起,而不为已存在的连接提供任何服务。如果有一种负载分布机制可以检测到服务器没有响应,则该服务器上的负载就可以分布到其 它的Web服务器上,这可能会致使这些服务器一个接一个地用光所有的线程。这样一来,整个服务器组都会被挂起。 *** 作系统级别可能还在不断地接收新的连接, 而应用程序(Web服务器)却无法为这些连接提供服务。用户可以在浏览器状态行上看到connected(已连接)的提示消息,但这以后什么也不会发生。

总之,还有许多因素也极有可能导致Web香港服务器租用或香港服务器托管站点无法工作。有许多种原因可能导致Web站点无法正常工作,这使得系统地检查所有问题变得很困难。

1月20日,深圳市螃蟹网络 科技 有限公司创始人尹柏霖发文控诉,前员工燕某在 游戏 上线测试当天(2017年12月15日),锁死服务器与电脑,并恶意失踪,致公司损失惨重。尹柏霖称,“我们上线不了也测试不了,等新员工到职后熟悉新代码又是几个月过去了。”他表示,时隔这么久才曝光燕某是觉得项目败了无所谓了,正准备走法律程序。现在公司已解散,自己背了几百万债在打工。

人们的最大疑惑,是一个刚来公司三个月的程序员,如何能拖垮耗资600万元、开发了两年的 游戏 项目? 游戏 之前是谁在开发,是否另有隐情?

尹柏霖表示:创业公司养不起闲人,燕飞宏负责的后端,之前在公司也只有一人负责。当时前任跟同事相处得很好,奈何身体出了问题,跟妻子孩子离开深圳,回老家养病去了。而公司正值 游戏 上线前夕,他情非得已,通过朋友认识了燕飞宏。

尹柏霖惊奇地发现,燕飞宏跟自己是老乡也是校友,技术能力也过关,就给了技术总监的职位(相当于技术部门负责人)和4万元的月薪。“这其实是挺不合理的,但当时我们项目已经停摆了。如果他做得好,工资高一点也可以接受。”

公告里称燕飞宏“心智异于常人”。公司同事跟燕飞宏很难沟通,“他自己做后端时还没问题,一跟前端和策划合作,各种骂人摆谱都来了。”尹柏霖称,燕飞宏经常早退去吃饭,一起拼命的同事对他意见很大。然而他的级别是“技术合伙人”,燕飞宏表示:他们是普通员工,我是管理层,我想怎样就怎样。“在公司得小心哄着他,还专门给他搞了特殊的电脑桌和椅子。”

矛盾爆发是在 游戏 上线测试的那一天。中午全员会议时,燕飞宏怎么也请不来,尹柏霖亲自去请,他却摔键盘走人了。下午两点 游戏 就要上线,他们原以为他像往常一样出去就餐,结果燕飞宏再也没回公司。他的电脑密码、服务器密码,也无人能解。 游戏 内测最终泡汤。

这款 游戏 本名《生灵怒》,预算100万元,耗时8个月,但实际开发拖了一年多。“拖到这时候,每个月支出就有十多万元,我们实在没钱了。”内测泡汤后,前端主程序员颇为失望,“大家苦兮兮熬了一年,最终落得这个后果,心态要崩了。”最终抢救8个月后,项目宣布失败。

尹柏霖是 游戏 策划出身,工作了七八年,把攒下的100万元全部投入了项目。另一位做实业的合伙人也投进了自己的300万元。项目失败后,尹柏霖不得不关闭公司。他形容自己在深圳“一无所有,33岁没车没房,老婆还要生了”,只能打工度日。

在规划里,《生灵怒》是一款RTS+实时消除对战玩法的 游戏 ,全球同服。“我们走的是独立 游戏 路线,对口碑抱有很大希望。”尝试过 游戏 的玩家尽管提出诸多不足,但对玩法机制赞不绝口。根据尹柏霖预测,这款 游戏 未来能做到月千万元级别的流水。但这一切如今都已付之东流。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11467049.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存