欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用arthas命令redefine實(shí)現(xiàn)Java熱更新(推薦)

 更新時(shí)間:2020年05月06日 09:06:04   投稿:mrr  
今天分享一個(gè)非常重要的命令 redefine ,主要作用是加載外部的 .class 文件,用來替換 JVM 已經(jīng)加載的類,總結(jié)起來就是實(shí)現(xiàn)了 Java 的熱更新,感興趣的朋友跟隨小編一起看看吧

arthas 是一個(gè) Java 開源診斷神器。

今天分享一個(gè)非常重要的命令 redefine ,主要作用是加載外部的 .class 文件,用來替換 JVM 已經(jīng)加載的類,總結(jié)起來就是實(shí)現(xiàn)了 Java 的熱更新。

redefine 在一下幾種情況中會(huì)失?。?、增加了 field ;2、增加了 method ;3、替換正在運(yùn)行的方法。

前兩個(gè)比較好理解,第三個(gè)意思就是這個(gè)方法必須結(jié)束之后才會(huì)被替換,如果有個(gè)方法開始運(yùn)行之后就不會(huì)跳出,那么這個(gè)方法所在的類是無法被替換的,類似無限循環(huán)的方法。

中間提到了將本地的 .class 文件上傳到服務(wù)器的技巧,個(gè)人沒有采用,如果是要熱更新,完全可以利用 mc 這個(gè)命令在服務(wù)端編譯更新后的代碼,然后進(jìn)行本地替換。

arthas命令redefine實(shí)現(xiàn)Java熱更新

代碼

package com.fun;

import com.fun.frame.SourceCode;
import org.slf4j.Logger;

import java.util.ArrayList;
import java.util.List;
public class Fun extends SourceCode {
  int[] ss = new int[1024];
  public static Logger logger = getLogger(Fun.class);
  public static void main(String[] args) {
    List<Fun> funs = new ArrayList<>();
    while (true) {
      Fun fun = new Fun();
      funs.add(fun);
      sleep(3000);
      test();
      output(funs.size());
    }
  }
  public static void test() {
    logger.info("成功!!!");
  }
}

調(diào)用 test() 方法會(huì)打印日志的,如果是該方法被其他地方調(diào)用,修改之后也會(huì)生效。

到此這篇關(guān)于使用arthas命令redefine實(shí)現(xiàn)Java熱更新(推薦)的文章就介紹到這了,更多相關(guān)arthas Java熱更新內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中checkbox實(shí)現(xiàn)跨頁多選的方法

    Java中checkbox實(shí)現(xiàn)跨頁多選的方法

    最近做了一個(gè)項(xiàng)目其中遇到這樣的需求,要實(shí)現(xiàn)checkbox跨頁多選功能,經(jīng)過小編整理,順利解決,今天小編給大家分享Java中checkbox實(shí)現(xiàn)跨頁多選的方法,需要的的朋友參考下
    2017-01-01
  • Java基礎(chǔ)知識(shí)之ByteArrayOutputStream流的使用

    Java基礎(chǔ)知識(shí)之ByteArrayOutputStream流的使用

    這篇文章主要介紹了Java基礎(chǔ)知識(shí)之ByteArrayOutputStream流的使用,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Request對象如何獲取請求頭數(shù)據(jù)

    Request對象如何獲取請求頭數(shù)據(jù)

    這篇文章主要介紹了Request對象如何獲取請求頭數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java Map 按Key排序?qū)嵗a

    Java Map 按Key排序?qū)嵗a

    這篇文章主要介紹了Java Map 按Key排序?qū)嵗a的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • idea 自動(dòng)生成類注釋和方法注釋的實(shí)現(xiàn)步驟

    idea 自動(dòng)生成類注釋和方法注釋的實(shí)現(xiàn)步驟

    這篇文章主要介紹了idea 自動(dòng)生成類注釋和方法注釋的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 關(guān)于PreparedStatement的setObject作用及說明

    關(guān)于PreparedStatement的setObject作用及說明

    這篇文章主要介紹了關(guān)于PreparedStatement的setObject作用及說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Scala遞歸函數(shù)調(diào)用自身

    Scala遞歸函數(shù)調(diào)用自身

    這篇文章主要介紹了Scala遞歸函數(shù),Scala遞歸函數(shù)是一種函數(shù)可以調(diào)用自身的函數(shù),直到滿足某個(gè)特定的條件為止。在函數(shù)式編程的語言中,遞歸函數(shù)起著重要的作用,因?yàn)樗梢杂脕肀硎狙h(huán)或迭代的邏輯
    2023-04-04
  • java?工作流引擎設(shè)計(jì)實(shí)現(xiàn)解析流程定義文件

    java?工作流引擎設(shè)計(jì)實(shí)現(xiàn)解析流程定義文件

    這篇文章主要為大家介紹了java?工作流引擎設(shè)計(jì)與實(shí)現(xiàn)及流程定義文件解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Intellij IDEA命令行執(zhí)行java無法加載主類解決方案

    Intellij IDEA命令行執(zhí)行java無法加載主類解決方案

    這篇文章主要介紹了Intellij IDEA命令行執(zhí)行java無法加載主類解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 深入了解java 8的函數(shù)式編程

    深入了解java 8的函數(shù)式編程

    函數(shù)式編程并不是Java新提出的概念,其與指令編程相比,強(qiáng)調(diào)函數(shù)的計(jì)算比指令的計(jì)算更重要;與過程化編程相比,其中函數(shù)的計(jì)算可以隨時(shí)調(diào)用。下面我們來詳細(xì)了解一下吧
    2019-06-06

最新評論