mortonnex
V2EX  ›  问与答

arthas 的 redefine 原理是怎样的?

  •  
  •   mortonnex · Mar 6, 2019 · 1956 views
    This topic created in 2648 days ago, the information mentioned may be changed or developed.
    redefine 相当于热更新
    redefine 的是 class,那之前已经实例化的对象是怎样被改变的?
    Supplement 1  ·  Mar 6, 2019
    看了源码,得知是调用 instrumentation.redefine()实现的
    但是还是有个问题:怎么处理之前已经实例化的对象?
    2 replies    2019-05-20 08:16:59 +08:00
    BBCCBB
        1
    BBCCBB  
       May 19, 2019
    实例化的对象有指针指向对应的 Class 信息, 只要 Class 里的方法字节码安全替换,实例化的对象下次就会用 Class 里最新的, 并不是每个对象都会单独存一份 Class 的字节码信息。。
    mortonnex
        2
    mortonnex  
    OP
       May 20, 2019 via iPhone
    @BBCCBB 学习了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2912 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 06:45 · PVG 14:45 · LAX 23:45 · JFK 02:45
    ♥ Do have faith in what you're doing.