<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 捕獲 Java 堆轉儲的前 3 種方法 > 原文: [https://javatutorial.net/capture-java-heap-dump](https://javatutorial.net/capture-java-heap-dump) 在本文中,我將教您多種捕獲 Java 堆轉儲的方法。 對于優化內存消耗至關重要,堆轉儲被描述為 Java 進程的內存打印。 Java [堆轉儲](https://www.ibm.com/support/knowledgecenter/en/SS3KLZ/com.ibm.java.diagnostics.memory.analyzer.doc/heapdump.html)是診斷與內存相關的問題的重要對象,這些問題包括`java.lang.OutOfMemoryError`,垃圾收集問題和內存泄漏(緩慢),這些都是 Java Web 開發的一部分。 為了清楚起見,在進行快照的瞬間,堆轉儲包含諸如 Java 類和堆中的對象之類的信息。 可以幫助您分析堆轉儲的工具包括 [Heap Hero](http://heaphero.io) 和 [Eclipse MAT](https://www.eclipse.org/mat/) 。 但是,您仍然需要為工具提供在正確的時間和正確格式下捕獲的堆轉儲。 ## 1\. `jmap –XX:+HEAPDUMPONOUTOFMEMORYERROR` 值得注意的是,`jmap`會將堆轉儲打印到特定的文件位置。`jmap`工具通常打包在 [JDK](https://javatutorial.net/install-java-8-jdk-on-ubuntu) 中。 您可以在以下文件夾中找到它:`<JAVA_HOME>\bin`。 要調用`jmap`,請執行以下過程。 `jmap -dump: live, file=<file-path> <pid>`,其中`pid`是 Java 進程 ID,將為其捕獲堆轉儲。此外,`file-path`是其中打印堆轉儲的文件路徑。 **請注意**,傳遞“實時”選擇至關重要。 如果選項“通過”,則只會將活動對象寫入堆轉儲文件。 但是,如果您無法通過該選項,則所有對象(包括未設置為垃圾收集的對象)都將被打印到堆轉儲中。 這樣的錯誤會過多且不必要地增加其堆轉儲的大小。 通過將您的移動開發需求與 [Java Development Company](https://www.nearshore-it.eu/java-development/) 簽訂合同,可以避免此類錯誤。 ## 2\. `HeapDumpOnOutOfMemoryError` 當應用程序遇到`java.lang.OutOfMemoryError`時,捕獲瞬時堆轉儲至關重要。 這樣的過程將有助于確定內存中占用的對象以及它們在`java.lang.OutOfMemoryError`發生時的位置所占用的空間量(百分比)。 但是,由于操作和技術很多,操作組可能無法捕獲堆轉儲。 此外,團隊可能還重新啟動了該應用程序。 因此,堆轉儲捕獲已成為系統應用程序的關鍵方面,尤其是在涉及內存問題時。 幸運的是,`XX:+HeapDumpOnOutOfMemoryError`選項將在該過程中提供幫助。 您只需在應用程序啟動時傳遞系統屬性(`XX:+HeapDumpOnOutOfMemoryError`)。 然后, [JVM](https://javatutorial.net/jvm-explained) 將通過在 JVM 面臨`OutOfMemoryError`的確切時間捕獲堆轉儲來完成其余工作。 值得注意的是,在上述情況下將捕獲的頭轉儲將打印在名為`-XX:HeapDumpPath`的系統屬性概述的位置中 ## 3\. `jcmd` `jcmd`工具用于發送命令請求以診斷 Java [JVM](https://javatutorial.net/jvm-explained) 。 同樣,`jcmd`工具包含在 JDK 軟件包中。 您可以在名為`bin`的文件夾中獲取它。 這是調用`jcmd`時需要使用的過程; 1. 轉到`jcmd <pid> GC.heap_dump <file-path>` 2. 其中`pid`:是一個 Java 進程 ID,將為其捕獲堆轉儲 4. 另外,`file-path`是在其中打印堆轉儲的文件路徑。 結論 在本文中,我討論了可用于捕獲 Java 堆轉儲的三個主要過程:(1)`jmap –XX:+HEAPDUMPONOUTOFMEMORYERROR`(2)`HeapDumpOnOutOfMemoryError`和(3)`jcmd`。
                  <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>

                              哎呀哎呀视频在线观看