前言

War3设计的时候可能没有想到如今的RPG地图的火爆,作为一款RTS游戏来说当初的设计也不会考虑到地图上单位过多的问题(游戏机制有人口限制)。因为在脚本引擎对句柄回收机制这块并没有那么先进(自动回收机制),只是做了个大概,更多需要开发者自己手动去回收,这里就来看看脚本里对于内存回收的逻辑。

环境

Game.dll:126

数据和代码

一直以来很多大型RPG地图在时长超过30分钟后都会有几率产生一个内存不足的崩溃,网上流传的解决办法是改成OPENGL模式,这个只是个治标不治本的方法,因为OPENGL在内存消耗上比D3D小,所以只能多维持一会而已,最终还是会导致内存不足的崩溃。在游戏里一个句柄就代表了一块内存,脚本里创建的句柄没有被正确的释放就会导致的内存泄漏,这才是最根本的原因。

相关汇编代码:

0286CB50    6A FF           push -1                                    申请句柄
0286CB52    68 71B3C602     push Game.02C6B371
0286CB57    64:A1 00000000  mov eax,dword ptr fs:[0]
0286CB5D    50              push eax
0286CB5E    83EC 08         sub esp,8
0286CB61    56              push esi
0286CB62    57              push edi
0286CB63    A1 40E1EE02     mov eax,dword ptr ds:[2EEE140]
0286CB68  

War3 脚本对象句柄管理相关推荐

  1. 内核对象句柄泄漏检测

    自制工具   翰华Box:https://hanhuabox.lanzous.com/b00zjq9uf 翰华Box - 开发日志:https://blog.csdn.net/qq_41517936/ ...

  2. U3D 场景切换时 脚本对象,GO对象,资源对象的问题

    U3D 场景切换时 脚本对象,GO对象,资源对象的问题 脚本对象:在LUA中写了一个actor类,它封装了角色逻辑,引用了一个GO. GO对象:通过 GameObject.Instantiate(资源 ...

  3. c++ file* 句柄泄漏_C++核心准则?讨论:持有没有被句柄管理的资源时切勿抛出异常...

    Discussion: Never throw while holding a resource not owned by a handle 讨论:持有没有被句柄管理的资源时切勿抛出异常 Reason ...

  4. 深入BeanShell脚本对象

    更多详情请见此处 使用 BeanShell 的许多朋友使用它来编写与已经存在的 Java 类或者 API 作业的脚本,或者为了他们自己的应用在运行时在没有其他编译器的帮助下执行其他种类动态的活动.通常 ...

  5. python写网页脚本_东拼西凑用python脚本登录web管理页面做巡检(实现)

    东拼西凑用python脚本登录web管理页面做巡检(实现) 发布时间:2020-06-06 12:26:40 来源:51CTO 阅读:489 参考博文https://www.cnblogs.com/s ...

  6. 【MATLAB】基本绘图 ( 句柄值 | 对象句柄值获取 | 创建对象时获取句柄值 | 函数获取句柄值 | 获取 / 设置 对象属性 | 获取对象属性 )

    文章目录 一.对象句柄值获取 1.句柄值 2.创建对象时获取句柄值 3.函数获取句柄值 4.获取 / 设置 对象属性 二.获取对象属性 1.获取 线 对象属性 2.获取 坐标轴 对象属性 一.对象句柄 ...

  7. 复制对象句柄--D u p l i c a t e H a n d l e 函数

    共享跨越进程边界的内核对象的最后一个方法是使用D u p l i c a t e H a n d l e 函数: BOOL DuplicateHandle( HANDLE hSourceProcess ...

  8. ⭐openGauss数据库源码解析系列文章—— 对象权限管理⭐

    在前面文章中介绍过"9.3 角色管理整",本篇我们介绍第9章 安全管理源码解析中"9.4 对象权限管理"的相关精彩内容介绍. 9.4 对象权限管理 权限管理是安 ...

  9. Expect的安装与应用,及实现自动检测另外一台服务器运行状态并重启,和使用expect脚本远程批量管理服务器与日志分析

    学习Expect Expect是什么? Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预.  Expect是不断发展的,随着时间的流逝,其功能越来越强大,已经成为 ...

最新文章

  1. 浅说——九讲背包之01背包
  2. R语言可视化包ggplot2包调整线条粗细实战(Adjust Line Thickness)
  3. WinDriver的一些
  4. 如何让Node.js运行在浏览器端
  5. 事物的开始和结束命令分别是什么_人教版小学四年级语文下册期末测试题及答案[1]...
  6. java退出不报异常_如何优雅的处理异常(java)?
  7. linux php木马下载,Linux shell快速查找PHP木马
  8. linux input输入子系统分析《三》:S3C2440的触摸屏驱动实例
  9. Windows Moblie 笔迹图板开发
  10. linux reedme常用单词,【每天打卡记单词】高中英语必背单词3500(Q/R)
  11. 浅谈软件测试测试策略几点总结内容
  12. r软件 linux,分享|Linux 上好用的 R 语言 IDE
  13. EGL接口介绍(转)
  14. 奇虎360前端面试题
  15. CAT翻译软件真的是翻译神器吗?
  16. Effective C++读书摘要--Accustoming Youself to C++
  17. 看门狗(windog) 是什么
  18. (jetson nano)ubuntu安装vscode为ros编写提供开发环境
  19. 【文末福利】半导体封装率先国产化,400+封装厂商最新名单汇总
  20. javascript的参数_如何使用JavaScript制作参数家具

热门文章

  1. Security——Spring LDAP
  2. C语言控制怪物自动走,一起用C语言打怪物
  3. create React-app脚手架中封装withRouter.js高阶组件
  4. 在线音频/视频测试地址
  5. 集群分为几种,用的软件分别是什么?
  6. 从7天到2秒:沃尔玛“供应链+区块链技术”改造方案
  7. html页面封装是什么,javascript封装是什么?
  8. python 字典代码_python的字典
  9. se论文笔记:Ways of Applying Artificial Intelligence in Software Engineering
  10. 网页前端第二次培训作业