ASM在游戏服务器的使用

本文介绍了ASM作为一个Java字节码操控框架在游戏服务器中的使用,通过对比javassist,阐述了ASM在创建和修改类字节码时的优势。ASM允许在JVM汇编指令级别操作,虽然需要一定的知识基础,但通过reflectasm库可以简化使用。在游戏服务器中,ASM优化了事件分发、异步任务等底层功能的反射调用,性能提升了约三分之一,性能测试结果优于其他字节码框架。
摘要由CSDN通过智能技术生成

ASM 是一个 Java 字节码操控框架。它能够以二进制形式修改已有类或者动态生成类。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。ASM 从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。
不过ASM在创建class字节码的过程中,操纵的级别是底层JVM的汇编指令级别,这要求ASM使用者要对class组织结构和JVM汇编指令有一定的了解。

而EsotericSoftware的reflectasm帮忙跨过了这个障碍,使用ASM起来非常方便。

方法级别的反射原本如下写法:

 

Method method=instance.getClass().getMethod("addName");
method.setAccessible(true); 
method.invoke(instance,  "Awesome McLovin");
method.setAccessible(false);

 

 

 

 

用Reflectasm后,调整为如下,是不是很简单呢?


                
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值