當前位置:首頁 » 編程軟體 » 修改jit編譯參數

修改jit編譯參數

發布時間: 2023-01-11 19:10:08

1. JIT 調試

我是LZ,來補充一下

例如:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
啟用 JIT 調試後,任何無法處理的異常
都將被發送到在此計算機上注冊的 JIT 調試器,
而不是由此對話框處理。

這東西是為了准備高考額~望各位大大伸出援手
重裝系統什麼的就不要來答了,謝謝

2. 要啟用實時(JIT)調試

是com組建引起的,需要空間重新注冊,有的時候更換目錄也會出現此問題。
1. 「開始- > 運行」 , 鍵入cmd.exe

2. 在命令行里運行 「msdtc -uninstall」,然後請您確認一下MSDTC這個服務在您的服務管理器裡面已經不存在了」 Distributed Transaction Coordinator」。並且請您也確認一下在群集管理器界面里msdtc的資源是不是在裡面,如果在,請您刪除這個資源。

3. 然後請在 cmd里運行」msdtc -install」 ,然後您再查看一下MSDTC這個服務是不是又出現在了服務管理界面以及集群組上。

4. 打開控制面板,選擇添加刪除程序

5. 然後選擇添加刪除Windows組件

6. 選擇」Application Server」

7. 選擇 詳細 .

8. 保證已經勾選了 Enable network DTC access 。

9. 選擇下一步

在開始 --- 運行輸入MMC,然後點確定第二步:在控制台「文件」菜單裡面選擇「添加刪除管理單元」。第三步:在添加後的「安全配置和分析」滑鼠右鍵點擊選擇「打開資料庫在打開資料庫下面的文件名可以隨意輸入一個名字在導入模板界面選擇「Setup Security.inf」。

第四步:在「安全配置和分析」滑鼠右鍵菜單選「立即配置計算機出現下面這個窗口的時候,直接點確定配置是的界面,等著這個窗口自動關閉,工作就結束了

第五步:關閉控制台界面,選擇「否重起電腦,恢復系統注冊表,服務,等設置

10. 點擊完成

3. idea設置springboot啟動jvm參數

idea設置springboot啟動jvm參數,設置方式,通過ldea設置,編輯配置文件。參數說明參數說明-Xms初始化堆內存大小,eg.-Xms1G-Xmx堆內存最大值,eg.-Xms1G,通常與-Xms設置相同的值-XX:ReservedCodeCacheSize代碼緩存,它是用來存儲編譯方法生成的本地代碼。代碼緩存確實很少引起性能問題,但是一旦發生其影響可能是毀滅性的。如果代碼緩存被占滿,JVM會列印出一條警告消息,並切換到interpreted-only模式:JIT編譯器被停用,位元組碼將不再會被編譯成機器碼。因此,應用程序將繼續運行,但運行速度會降低一個數量級,直到有人注意到這個問題。就像其他內存區域一樣,我們可以自定義代碼緩存的大小。它們的參數都eg.-XX:ReservedCodeCacheSize=240m-XX:InitialC查看更多。

4. 怎麼啟動JIT調試

不知道!!!

5. JIT(上):Tensorflow如何實現即時編譯

Tensorflow的JIT(just-in-time)是指在運行 @tf.function 修飾的python函數時,由 jit 、 tf2xla 和 XLA 一起完成一系列如子圖構造、子圖優化、圖編譯和圖執行等操作。編譯後的可執行程序-- executable 會存放到cache中,供再次調用時直接獲取執行。JIT的好處在 開篇 已經講過了,這里不再贅述。

JIT的流程可以概括為:Tensorflow子圖構造/優化,graph -> HLO,編譯/執行,合並計算結果到Tensorflow圖這四部分。本文只涉及圖編譯和圖執行。

函數中ops在子圖構造階段被包裹進一個cluster node,並替換成 xla_compile 和 xla_run 這兩op,而 XlaCompileOp 和 XlaRunOp 就是它們的 OpKernel ,分別用於圖編譯和執行。

XlaCompileOp通過 XlaCompilationCache 獲取或編譯executable,並將其封裝成 XlaExecutableClosure ,並緩存在 XlaExecutableClosureStore 。 XlaRunOp 用從XlaCompileOp傳遞來的key在cache中查找並執行executable。

從編譯流程圖可以看到,XLA的編譯結果會緩存到XlaCompilationCache,後續調用可以根據 signature 在cache中查找executable。

函數的 signature 是由 BuildSignature(function, args) 根據函數和arguments生成的。即使是同一個函數,只要input tensors不同,signature也會不一樣,這就是 power() 被編譯兩次的原因:第三次函數調用時,由於無法通過signature在cache中找到executable而觸發編譯。

signature表示唯一的計算圖:只要函數中的ops序列和arguments(type/shape)是確定的,那麼計算圖也是確定的。

編譯之前需要通過 tf2xla 將圖轉換成XLA支持的語言 HLO 。tf2xla為每個Tensorflow op創建了生成HLO的 XlaOp ,因此,只要執行該Tensorflow子圖,就可以生成具有相同的拓撲排序的HLO -- XlaComputation 。

XlaComputation (HLO)可以認為是一個運行在device上的純函數,它的input/output會伴隨著host-to-device(H2D)和device-to-host(D2H)的數據傳輸。

我們知道,Tensorflow圖中的input tensor有兩種: tf.Placeholder 和 tf.Variable ,前者每個step都會將新data發送到device,而後者是模型參數,它們會常駐內存,只在store/load checkpoint才會有H2D/D2H。

而純函數的定義是:

不管是input還是output,雖然variable和其他argument一樣存在於HLO的參數列表和返回值列表中,但它們實際上是常駐於device的,不需要也不應該H2D/D2H。

因此,HLO在編譯時還需要通過 argument_input_indices 、 resource_input_indices 和 resource_update_to_input_index 等options來區分arguments和variables。

此外,如果有input是常數,為了避免無謂的H2D開銷,可以把它固化到函數內部。同理,對於常數output,它沒必要出現在函數中,可以直接定義在 XlaCompilationResult 的output buffer。

XlaCompilationResult是 Graph -> HLO 的output,它封裝了HLO以及上述部分metadata、buffers。

XlaCompileOp會把編譯好的executable、metadata、input/output buffers、options等統統封裝進一個closure -- XlaExecutableClosure ,並將其緩存在 XlaExecutableClosureStore 供 XlaRunOp 獲取。

XlaRunOp 可以通過一個數字字元串key(從0開始累加)從cache中查找並執行XlaExecutableClosure,這個key由XlaCompileOp提供。

6. JDK命令介紹

命令jps用於列出java進程,直接運行jps不加任何參數,可以列出Java程序的進程ID以及Main函數等名稱。
參數-q指定jps只輸出進程ID,而不輸出類的短名稱
參數-m用於輸出傳遞給Java進程(主函數)的參數
參數 -l用於輸出主函數的完整路徑
參數 -v可以顯示傳遞給JVM的參數

jstat是一個可以用於觀察Java應用程序運行時信息的工具。它的功能非常強大,可以通過它,查看堆信息的詳細使用情況。主要用於監控虛擬機的各種運行狀態信息,如類的裝載、內存、垃圾回收、JIT編譯器等,在沒有GUI的伺服器上,這款工具是首選的一款監控工具。
基本使用語法為:

選項option可以由以下值構成:

-class:顯示ClassLoader的相關信息。
-compiler:顯示JIT編譯的相關信息。
-gc:顯示與GC相關的堆信息。
-gccapacity:顯示各個代的容量及使用情況。
-gccause:顯示垃圾收集相關信息(同-gcutil),同時顯示最後一次或當前正在發生的垃圾收集的誘發原因。
-gcnew:顯示新生代信息。
-gcnewcapacity:顯示新生代大小與使用情況。
-gcold:顯示老年代與永久代的信息。
-gcoldcapacity:顯示老年代的大小。
-gcmetacapacity:顯示元空間的大小。(在java8之前是使用-gcpermcapacity顯示永久代的大小)
-gcutil:顯示垃圾收集信息。
-printcompilation:輸出JIT編譯的方法信息。
以上選項可以輸入 jstat -options 查看。

-t 參數可以在輸出信息前加一個 Timestamp 列,顯示程序的運行時間。

-h 參數可以在周期性數據輸出時,輸出多少行數據後,跟著輸出一個表頭信息。

vmid 參數就是Java進程id。

interval 參數用於指定輸出統計數據的周期,單位為毫秒。

count 用於指定一共輸出多少次數據。

jinfo 可以用來查看正在運行的Java運行程序的擴展參數,甚至支持在運行時修改部分參數。可以用來查看正在運行的 java 應用程序的擴展參數,包括Java System屬性和JVM命令行參數;也可以動態的修改正在運行的 JVM 一些參數。當系統崩潰時,jinfo可以從core文件裡面知道崩潰的Java應用程序的配置信息。

jmap 可以生成Java應用程序的堆快照和對象的統計信息。基本語法為:

option 選項如下:
-mp 生成java堆轉儲快照。格式為: -mp:[live,]format=b,file=,其中live子參數說明是否只mp出存活的對象
-finalizerinfo 顯示在F-Queue中等待Finalizer線程執行finalize方法的對象。只在Linux/Solaris平台下有效
-heap 顯示java堆詳細信息,如使用哪種收集器、參數配置、分代情況等,在Linux/Solaris平台下有效
-histo 顯示堆中對象統計信息,包含類、實例對象、合集容量
-permstat 以ClassLoader為統計口徑顯示永久代內存狀態。只在Linux/Solaris平台下有效
-F 當虛擬機進程對-mp選項沒有相應時。可使用這個選項強制生成mp快照。只在Linux/Solaris平台下有效

使用 jhat 工具可以用於分析Java應用程序的堆快照內容。jhat 在分析完成後,使用HTTP伺服器展示其分析結果。在瀏覽器中訪問 http://localhost:7000/

jstack 可用於導出Java應用程序的線程堆棧。語法為:

-l選項用於列印鎖的附加信息。
jstack 工具會在控制台輸出程序中所有的鎖信息,可以使用重定向將輸出保存到文件。
通過 jstack 工具不僅可以得到線程堆棧,它還能自動進行死鎖檢查,輸出找到的死鎖信息。

之前所述的工具中,只涉及到監控本機的Java應用程序。而在這些工具中,一些監控工具也支持對遠程計算機的監控(如:jps、jstat)。為了啟用遠程監控,則需要配合使用jstatd工具。
命令jstatd是一個RMI服務端程序,它的作用相當於代理伺服器,建立本地計算機與遠程監控工具的通信。jstatd伺服器將本機的Java應用程序信息傳遞到遠程計算機。

JConsole(Java Monitoring and ManagementConsole)工具時JDK自帶的圖形化性能監控工具。通過JConsole工具,可以查看Java應用程序的運行概況,監控堆信息、永久區使用情況、類載入情況等。

7. C#源代碼編譯成為本地代碼的編譯過程

很有興趣的話,可以去閱讀下JeffreyRitchie的《ClrviaC#》,目前出到第三版,英文好的話強烈推薦看英文版的,而且我有該電子書和實體書。

下面講下我的理解:大致上不會出什麼差錯的,細節部分你可以參照上面的書籍!

1.首先,c#源碼經過c#編譯器被編譯成託管模塊(IL中間代碼、元數據(Metadata))

2.然後,使用C#編譯器以及程序集鏈接器(AssemblyLinker----AL.exe)將上述託管模塊以及項目的資源文件Combine(整合)成一個程序集(Assembly)

上述程序集就是你所看到的exe文件或者dll文件等等,程序集中包含了manifest描述文件,是該程序集內容以及關系的一個清單,具體的內容你可以參見JR的書跟Java中的類似!

雙擊該exe運行的時候:

3.最後,運行時,CLR裝載對應的程序集,使用內部的三個即時編譯器(常用的為JIT),再去根據本機的環境去進行相應的優化(針對CPU優化等等),即時的翻譯成本地機器指令去執行。

還有一個本地化代碼生成工具,NGen.exe~~

這個最好能去看看那本JR的神作!細節不是我三言兩語能講清的~~

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:593
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:888
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:582
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:765
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:684
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1013
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:255
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:114
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:806
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:713