博客
关于我
游戏服务端框架之代码热部署(一)
阅读量:297 次
发布时间:2019-03-03

本文共 591 字,大约阅读时间需要 1 分钟。

对于一个部署在生产环境的游戏项目来说,我们希望当代码出现bug的时候,可以不用重启游戏进程而达到动态修改代码的目的——

这就是代码热部署!

我们先来看一下,不同编程语言是如何实现代码热部署的。

使用Javascript写过网页的童鞋们都清楚,修复代码后直接刷新一下浏览器,就可以执行最新的脚本;游戏客户端脚本Lua也是如此,在游戏运行过程中可以动态卸载已加载的文件再重新加载,神不知鬼不觉就把bug修复了;Erlang在游戏服务端应用也相当广泛,函数式语言尽可能不使用全局性变量,状态都是用函数参数保存,天然无状态的特性使得代码热部署变得相当简单……

了解过jvm的朋友们都知道,jvm使用类加载器和类的全路径名称结合起来标识一个类,以此来保证同一个类只能被一个类加载器所加载。因此,我们无法要求jvm主动卸载一个类而修改类代码,除非使用新的自定义类加载器。

利用JDK5的Instrumentation提供的接口,我们可以动态改变JVM已加载的类的方法体。

在JDK5 中,Instrumentation 要求在运行前利用或者系统参数来设置代理类。而 Java SE 6 的新特性改变了这种情况,通过 Java Tool API 中的 attach 方式,我们可以很方便地在运行过程中动态地设置加载代理类,以达到 instrumentation 的目的。

下边演示热部署的操作过程

转载地址:http://dsam.baihongyu.com/

你可能感兴趣的文章
[0115ZIZI]扩展P5.js库相关链接
查看>>
B1008 数组元素循环右移问题 (20 分)
查看>>
B1022 D进制的A+B (20 分)
查看>>
B1021 个位数统计 (15 分)
查看>>
不断发展的5G MIMO网络和虹科测试方案
查看>>
Photoshop基本操作(五)
查看>>
Y形电路与三角电路转换,网孔和节点分析法
查看>>
java中的字符串
查看>>
Java中的集合简要概括
查看>>
Java中的反射
查看>>
手写框架,模拟简易的SpringIOC
查看>>
Idiot 的间谍网络
查看>>
动态代理与SpringAOP
查看>>
MySql索引及使用、实现的数据结构
查看>>
Why Did the Cow Cross the Road I P
查看>>
思维题
查看>>
FBI树
查看>>
局域网安全之ARP攻击
查看>>
pikachu之文件包含漏洞
查看>>
【DVWA】XSS-----------------high+各级别总结
查看>>