<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 如何測試獨立的 Java 應用程序 > 原文: [https://javatutorial.net/how-to-profile-standalone-java-applications](https://javatutorial.net/how-to-profile-standalone-java-applications) ## 什么是單元測試? ![java-featured-image](https://img.kancloud.cn/05/3e/053ee0bb59842d92359246c98f815e0c_780x330.jpg) 單元測試是一種軟件測試方法,其中正在測試 Java 應用程序的小組件。 其目的是確認每個軟件的行為均符合預期。 即使是這樣,您也可以使用單元測試來確定另一種實現是否在內存和性能方面會帶來更好的結果。 如果您對單元測試不是很熟悉,建議您參考本主題的本教程。 ## 什么是性能分析? 性能分析會檢查應用程序,并嘗試查找與 Java 應用程序相關的內存或性能問題。它允許您執行的操作是通過監視 [JVM(Java)來獲取有關性能,方法時序,對象分配等的數據。 虛擬機)](https://javatutorial.net/jvm-explained)。 ### 您可以使用 [IDE](https://javatutorial.net/choose-your-java-ide-eclipse-netbeans-and-intellij-idea) 來剖析這些類型的 Java 應用程序: 1. Java EE / Web 應用程序 2. Java 自由格式項目 3. Java SE 項目 4. NetBeans 模塊和模塊套件 ### JProfiler(Ej 技術) 對于分析工具,JProfiler 是許多開發人員的最佳選擇。 它具有相對易于使用的界面,可幫助檢查系統性能,內存使用情況,內存泄漏(如果有)和線程分析。 通過提供所有這些信息,我們可以診斷我們的應用程序的行為,并在需要時進行更改。 請注意,下圖顯示了正在運行的應用程序。 ![JProfiler interface overview](https://img.kancloud.cn/dd/32/dd325709ab574ff26d88693c137106f5_1482x844.jpg) JProfiler 界面概述 從上圖可以看到,它顯示了與性能,內存直接相關的不同組件,可以輕松地幫助您優化程序。 ### 讓我們嘗試一個使用 JProfiler(或一般情況下進行概要分析)的實際用例 - 內存泄漏檢測 #### 什么是內存泄漏? 要了解內存泄漏,如果您具有有關內存的基本知識,那將是一個好主意。 如果您不希望閱讀,請隨時閱讀[本文](https://javatutorial.net/java-memory-examples)和[此文章](https://javatutorial.net/java-increase-memory)。 如果您之前已經編寫過 Java 應用程序,則可能會遇到這個普遍存在的問題。 真正的實質是尚未釋放回池中的內存。 考慮以下示例:想象您必須創建所需的對象。 但是,當您不再需要它時,請繼續前進,而不是從內存中“釋放”它。 幕后發生的事情是,仍然引用該對象。 當應用程序開始消耗更多資源時,它很快就會耗盡資源,并導致`OutOfMemoryError`。 這是[垃圾收集](https://javatutorial.net/java-garbage-collection)無法從內存中刪除這些未使用的對象的時候。 ![Memory Leak Diagram](https://img.kancloud.cn/34/2a/342a52a09656186ba65e80e52c0c102f_724x366.jpg) 上圖給出的主要結論是 – **未使用的對象仍然占據運行中的內存,應用程序擁有的資源越多,它得到的性能越差,最終導致一個結果 – `OutOfMemoryError`。** 既然您知道什么是內存泄漏,并且實際上在編寫應用程序時要考慮到這一點,那么讓我們看看性能分析如何幫助我們識別并消除內存泄漏。 要在 Java 應用程序中輕松跟蹤內存泄漏,請導航至左側空白處的**堆查詢器**: ![Heap walker jprofiler](https://img.kancloud.cn/0a/0e/0a0e5edaa43eaa467abc47cb8933fc52_1484x782.jpg) 堆沃克 Jprofiler 要啟動示例項目,請單擊左上角的“啟動中心”: ![Start center JProfiler](https://img.kancloud.cn/b3/45/b345f761d53e5ce1550e97e9cece4f04_1486x978.jpg) 然后選擇第一個選項并選擇開始: ![JProfiler start center session configuration](https://img.kancloud.cn/f7/7f/f77f9a06adefba1a4dc8c73d251c8fe7_821x622.jpg) 您應該會看到以下窗口: ![leak memory window jprofiler](https://img.kancloud.cn/96/8e/968e692931a5574e44df468a73d44578_381x341.jpg) 我們感興趣的是“內存泄露”。但是在單擊它之前,請選擇“標記堆”以表明我們對新分配的對象感興趣。 ![Mark heap jprofiler](https://img.kancloud.cn/8a/a9/8aa9e1b692f0b11fe5ae6ffe631fd769_1277x836.jpg) 現在,這是應用程序開始創建未進行垃圾收集的對象的過程。 現在我們已經完成了,單擊“Memory Leak”,然后等待一些時間來創建新對象。 現在,讓我們進行堆快照: ![Heap snapshot](https://img.kancloud.cn/e9/7d/e97d18f975acfed9e7a00081b4137b20_1765x863.jpg) 現在,當我們單擊“Heap Walker”時,我們將看到自上次標記堆操作以來已創建了多少個實例: ![heap snapshot allocated objects](https://img.kancloud.cn/05/d1/05d171211a714c8efb028b4cefb003bb_1618x626.jpg) 通過查看此窗口,我們不知道哪些對象正完全參與內存泄漏。 為此,我們需要單擊“使用新的”。 然后我們將看到: ![General class memory leak](https://img.kancloud.cn/56/df/56dfaa243b144a9395c54ef81b1eee30_1609x625.jpg) 選擇最通用的類??并選擇傳入的引用,然后單擊“確定”: ![Incoming references](https://img.kancloud.cn/42/99/4299cac21454e041105b594fb9c9c997_607x461.jpg) 從那里開始,查找內存泄漏的最佳方法是在“顯示 GC 根目錄的路徑”上進行選擇: ![Show paths to GC Root JProfiler](https://img.kancloud.cn/96/2f/962f4db152274776bf8d5b90ca11497b_1616x689.jpg) 我們設法找到實例的泄漏。 ## 結論 通常,測試是程序員必須能夠使用的最重要的技術之一。 有許多工具可以幫助測試和調試。 有些比其他的簡單,例如 Eclipse 中的 Debug 模式,有些則更復雜,例如 JProfiler。 但是,如果您關心性能,優化和無內存問題,有時您需要深入研究給定 Java 應用程序的內部工作。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看