最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java程序執(zhí)行的全流程

 更新時間:2024年01月29日 09:06:42   作者:源末coco  
這篇文章主要介紹了Java程序執(zhí)行的全流程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Java程序執(zhí)行流程

Java程序執(zhí)行的整個過程可以分為三個階段:編譯、加載和運行

1.編譯

Java程序的源代碼需要經(jīng)過編譯器(例如javac)的編譯,將其轉換成字節(jié)碼(即.class文件),這個過程稱為編譯。

編譯器會對源代碼中的語法進行檢查和優(yōu)化,并生成可在JVM上運行的字節(jié)碼文件。

2.類加載

當Java程序啟動時,JVM就會創(chuàng)建一個類加載器(ClassLoader)樹來加載所有的類。

類加載器負責在運行時將類的字節(jié)碼文件加載到內(nèi)存中,并創(chuàng)建對應的Class對象。

類加載器會按照一定的順序加載類,通常是先由系統(tǒng)類加載器(AppClassLoader)加載本地路徑下的類,如果找不到則由擴展類加載器(ExtClassLoader)加載,最后由啟動類加載器(BootstrapClassLoader)加載JRE中的核心類。

類加載器會執(zhí)行以下三個步驟:

  • 裝載:查找并加載字節(jié)碼文件;
  • 鏈接:對字節(jié)碼文件進行驗證、準備和解析;
  • 初始化:對類進行初始化,包括執(zhí)行類的static塊(如果有)和類變量的賦值。

3.執(zhí)行

在加載完成后,JVM會執(zhí)行main方法。具體執(zhí)行過程如下:

  • 創(chuàng)建主線程;
  • 將main方法所在類的字節(jié)碼文件裝載到JVM內(nèi)存中;
  • 執(zhí)行該類的static代碼塊(如果有);
  • 如果該類有父類,依次執(zhí)行其父類的static代碼塊(如果有);
  • 執(zhí)行main方法。

在執(zhí)行main方法時,JVM將會按照程序員編寫的語句依次執(zhí)行,在執(zhí)行完畢后,程序結束。

4.垃圾回收

在Java程序執(zhí)行過程中,JVM需要管理內(nèi)存,包括分配、使用和釋放內(nèi)存。

當一個對象不再被引用時,JVM會通過垃圾回收機制將其回收并釋放內(nèi)存。

垃圾回收器會定期掃描堆內(nèi)存中的對象,標記不再被引用的對象為垃圾對象,然后清理掉這些對象所占用的內(nèi)存空間。

Java代碼執(zhí)行Linux命令

說明:項目必須是部署在Linux服務器中才能生效。

1.工具類

@Controller
public class ExecuteNewFlowUtil {
    /**
     * 運行Linux命令
     * @author YuanRiKang
     * @date 2022/5/24 16:56
     * @param commands 命令集合
     * @return 返回結果
     */
    public List<String> executeNewFlow(List<String> commands) {
        List<String> rspList = new ArrayList<String>();
        Runtime run = Runtime.getRuntime();
        try {
            Process proc = run.exec("/bin/bash", null, null);
            BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
            PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(proc.getOutputStream())), true);
            for (String line : commands) {
                out.println(line);
            }
            out.println("exit");// 這個命令必須執(zhí)行,否則in流不結束。
            String rspLine = "";
            while ((rspLine = in.readLine()) != null) {
                System.out.println(rspLine);
                rspList.add(rspLine);
            }
            proc.waitFor();
            in.close();
            out.close();
            proc.destroy();
        } catch (IOException e1) {
            e1.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return rspList;
    }
}

2.方法執(zhí)行代碼段

//運行命令生成對比信息
List<String> generateComparativeInformationCommands = new ArrayList<>();
generateComparativeInformationCommands.add("命令1");
generateComparativeInformationCommands.add("命令2");
generateComparativeInformationCommands.add("命令3");
executeNewFlowUtil.executeNewFlow(generateComparativeInformationCommands);

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • SpringBoot集成screw實現(xiàn)數(shù)據(jù)庫文檔生成的代碼示例

    SpringBoot集成screw實現(xiàn)數(shù)據(jù)庫文檔生成的代碼示例

    數(shù)據(jù)庫設計文檔是項目技術文檔的重要組成部分,Screw 是一款開源的數(shù)據(jù)庫文檔生成工具,它支持多種數(shù)據(jù)庫類型,并能生成豐富格式的文檔,本文將通過一個實際的例子,展示如何使用 Spring Boot 集成 Screw 生成數(shù)據(jù)庫設計文檔
    2024-07-07
  • spring是如何解析xml配置文件中的占位符

    spring是如何解析xml配置文件中的占位符

    這篇文章主要介紹了spring是如何解析xml配置文件中的占位符,幫助大家更好的理解和使用spring框架,感興趣的朋友可以了解下
    2020-11-11
  • Java中BigDecimal的基本運算(詳解)

    Java中BigDecimal的基本運算(詳解)

    下面小編就為大家?guī)硪黄狫ava中BigDecimal的基本運算(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • java實現(xiàn)簡單三子棋游戲

    java實現(xiàn)簡單三子棋游戲

    這篇文章主要為大家詳細介紹了java實現(xiàn)簡單三子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 使用java實現(xiàn)云端資源共享小程序的代碼

    使用java實現(xiàn)云端資源共享小程序的代碼

    這篇文章主要介紹了用java寫一個云端資源共享小程序,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • 集合框架及背后的數(shù)據(jù)結構

    集合框架及背后的數(shù)據(jù)結構

    本文主要介紹了Java的集合框架Java?Collection?Framework,接口interface以及背后的數(shù)據(jù)結構,感興趣的同學可以閱讀參考
    2023-03-03
  • 如何使用JFrame完成動態(tài)模擬時鐘

    如何使用JFrame完成動態(tài)模擬時鐘

    本文介紹了如何使用JFrame完成動態(tài)模擬時鐘,需要的朋友可以參考下
    2015-08-08
  • Java深入淺出講解String類常見方法

    Java深入淺出講解String類常見方法

    在C語言中,如果要表示字符串而且對字符串進行操作的話,依靠的是數(shù)組和指針,而Java中提供了String類用來專門表示字符串,String類中常見的方法,以及一些細節(jié)是本篇重點
    2022-04-04
  • Java基礎之選擇結構與循環(huán)結構

    Java基礎之選擇結構與循環(huán)結構

    這篇文章主要介紹了Java基礎之選擇結構與循環(huán)結構,文中有非常詳細的代碼示例,對正在學習java基礎的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Java實現(xiàn)深度搜索DFS算法詳解

    Java實現(xiàn)深度搜索DFS算法詳解

    深度優(yōu)先搜索是一種在開發(fā)爬蟲早期使用較多的方法。它的目的是要達到被搜索結構的葉結點。這篇文章主要介紹了基于Java實現(xiàn)深度優(yōu)先搜索(DFS)算法,需要的朋友可以參考一下
    2021-12-12

最新評論

商丘市| 登封市| 淮南市| 金塔县| 会宁县| 澜沧| 姜堰市| 涿州市| 梨树县| 加查县| 灵川县| 镶黄旗| 隆尧县| 彭阳县| 曲靖市| 蛟河市| 贵南县| 亚东县| 讷河市| 攀枝花市| 万全县| 扶沟县| 镇远县| 舟山市| 慈利县| 蒙阴县| 肇源县| 辰溪县| 武强县| 织金县| 财经| 浦江县| 黔南| 高雄县| 马尔康县| 清水县| 渝北区| 成武县| 奉新县| 罗定市| 长丰县|