[英]How does Unsafe library help atomic variables to achieve thread safety?
我一直在閱讀 web 篇關於比較和交換 (CAS) 如何在幕后工作的文章。 由於AtomicInteger、AtomicLong等原子變量都使用了JNI的“Unsafe”庫的compareAndSet()方法,但是當你go實際實現時,你會得到下面一個空白的類抽象方法,它並沒有告訴你compareA ...
[英]How does Unsafe library help atomic variables to achieve thread safety?
我一直在閱讀 web 篇關於比較和交換 (CAS) 如何在幕后工作的文章。 由於AtomicInteger、AtomicLong等原子變量都使用了JNI的“Unsafe”庫的compareAndSet()方法,但是當你go實際實現時,你會得到下面一個空白的類抽象方法,它並沒有告訴你compareA ...
[英]What does the mmu line mean in zgc log?
在典型的詳細 zgc 日志中,mmu 行中這些數字的含義是什么? [gc,mmu ] GC(18939) MMU: 2ms/0.0%, 5ms/0.0%, 10ms/0.0%, 20ms/0.0%, 50ms/36.2%, 100ms/68.0% 我已經搜索並閱讀了幾頁,但在那一行仍然沒有任何表達 ...
[英]Why does java-11 version command shows java 18.x as output?
為什么 java-11 版本命令將 java 18.x 顯示為輸出 - 第一行輸出符合預期 --> java 11.0.17 2022-10-18 LTS 為什么運行時和熱點版本 -> 18.9 關於內部組件的 Java 版本,似乎還有更多我應該知道的。 有人能指教一下嗎。 ...
[英]OpenJDK 19 and compressed pointers
我很難理解壓縮指針在 Java 19 中的工作原理,感謝您的幫助。 在 Java 11 中,對於低於 32GiB(壓縮指針)的堆,引用大小為 4,對於更大的堆,引用大小為 8。 在 Java 19 中,即使對於更大的堆,它們似乎也占用 4 個字節(如何?)。 細節: Java 版本:OpenJDK ...
[英]The performance difference between java.lang.System and Unsafe
System和Unsafe都提供了一些重疊的功能(例如, System.arraycopy與_UNSAFE.copyMemory )。 在實現方面,看起來兩者都依賴於jni ,這是正確的說法嗎? (我可以找到unsafe.cpp但在 JVM 源代碼中找不到相應的arraycopy實現)。 另外, ...
[英]JITWatch Launching TriView for null
我試圖在 JITWatch 中運行我自己的類,但是,我似乎只能讓 sandbox/sources 文件夾中的 prepackaged.java 文件工作。 每次我在沙箱中運行自己的類時,我都會在控制台中得到以下信息: TriView window 然后打開,沒有任何顯示。 我嘗試通過將我的 JA ...
[英]Why Jonker's algorithm(mark-compaction) doesn't need extra space?
我正在從“垃圾收集手冊:自動內存管理的藝術”一書中學習標記壓縮算法。 對於 Lisp 2 算法,它說: Lisp 2 算法的主要缺點是它需要在每個對象頭中附加一個全槽字段來存儲對象要移動到的地址。 對於 Jonker 算法,它說: 線程需要在對象頭中有足夠的空間來存儲地址(如果需 ...
[英]What's the use of `offset` in the version of `Atomic::cmpxchg` in Hotspot?
這是用於 CAS 的 function Atomic::cmpxchg的實現版本:jbyte Atomic::cmpxchg(jbyte exchange_value, volatile jbyte* dest, jbyte compare_value) { assert(sizeof(jb ...
[英]G1 does not allow to allocate large object while Parallel does
openjdk 11.0.14.1 2022-02-08 考慮以下簡單的 Java 程序。 這里int的大小為 4 字節,因此分配int[Integer.MAX_VALUE / 2]需要4G的空閑堆大小。 現在讓我們用不同的選項運行程序。 一、 -XX:+UseParallelGC -Xmx5g 結 ...
[英]Detect constructors that "should not" be used with reflection
我有以下 function: function 應該獲得 class 名稱(作為String ),加載它,如果找到與Object... args匹配的構造函數,則創建此類 object 的新實例。 此代碼有效,但它可能會在@HotSpotIntrinsicCandidate方法上被調用。 例如,如 ...
[英]Java Flight Recorder - Continuous rolling recording
問題如何以最大年齡將滾動記錄放入磁盤? 語境當我的服務器出現問題時,我希望能夠轉儲前幾個小時的分析信息並對其進行分析,以了解哪里出了問題。 由於我不知道 go 什么時候會壞,JDK 應該不斷地將事件保存到磁盤。 由於服務器不經常重新啟動,為了避免文件無限增長,我需要設置某種上限(年齡或大小)。 因此 ...
[英]Why does Java HotSpot can not optimize array instance after one-time resizing (leads to massive performance loss)?
問題當fBuffer2在開始時僅調整一次大小( SELECT_QUICK = false )時,為什么在附加的代碼示例( SELECT_QUICK = true )中使用fBuffer1的速度是其他變體的兩倍? 代碼路徑完全相同,但即使在 10 分鍾后fBuffer2的吞吐量也不會增加到fBuff ...
[英]How to set Dlog4j2.formatMsgNoLookups=true in JVM?
在我的一台計算機中,有 Jre1.8.0_45,而在另一台計算機中有 OpenJDK。 我想設置 JVM 標志Dlog4j2.formatMsgNoLookups=true但我不知道在哪里寫這個配置。 有人可以指導我嗎? ...
[英]Does Java stop the world, when Lightweight Lock upgrade to Heavyweight Lock?
眾所周知,當偏置鎖升級到輕量級鎖時,JVM 將停止世界。 JVM 當輕量級鎖升級為重級鎖時,會停止世界嗎? 為什么? ...
[英]Java update from 11.0.11 to 11.0.13 changes JVM code cache behavior and results in more process cpu usage and strange profiled nmethods memory usage
我們使用 Java 11.0.11 和 -XX:ReservedCodeCacheSize=375m 運行一個復雜的集群應用程序,並且 24/7 連接相同的負載配置文件,無需重新啟動。 在我們將 AdoptOpenJDK jdk-11.0.11+9 更新為 Temurin jdk-11.0.13+ ...
[英]How codesection use relocation information of jvm compiled code in hotspot?
我知道編譯后的代碼存儲在 Hotspot 的 CodeBuffer 中,分為三個部分: insts 、 consts 、 stubs ,每個部分都有relocs ,我想知道 hotspot 是如何使用這些重定位信息的? ...
[英]In Hotspot JVM, why CDS needs Compressed Oops?
我讀了這篇文章“https://malloc.se/blog/zgc-jdk15”,最后一個索引是關於Class Data Sharing 。 在這個指數中, 此功能(表示 CDS)僅在啟用壓縮 Oops 功能時有效(-XX:+UseCompressedOops)。 我對CDS和Compress ...
[英]Java Hotspot Serviceability Agent SystemDictionary.ClassVisitor unavailable since JDK11
我正在嘗試構建一個非常基本的 Java 熱點可維護性代理來轉儲一個特定加載方法的字節碼。 這是我代理的代碼:package sun.jvm.hotspot.jdi; import sun.jvm.hotspot.oops.InstanceKlass; import sun.jvm.hotspot. ...
[英]how fragile is escape analysis in Hotspot in simple cases such as iterator in for-each loop
假設我有一個想要循環的 java.util.Collection。 通常我會這樣做: 但是假設這是在一些到處使用的核心實用方法中,並且在大多數地方,集合是空的。 那么理想情況下,我們不希望僅僅為了執行無操作循環而對每個調用者施加迭代器分配,我們可以重寫如下: 如果things是一個列表,一個更極端的 ...
[英]How To Stop JVM Skipping Loop
我有自己的測試 class 應該在沒有 JVM 刪除任何內容的情況下進行計時。 將 Java 從 StrictMath.sin() 調用的本機與我自己的 100,000,000 次重復的示例測試時間進行比較: 30度 sineNative(): 18,342,858 ns (#1), 1,574, ...