[jdk11u-dev] RFR: 8303215: Make thread stacks not use huge pages

Takuya Kiriyama tkiriyama at openjdk.org
Tue Oct 21 11:17:39 UTC 2025


Hi All,  

I would like to backport the fix for bug JDK-8303215 from JDK 17 to JDK 11. This bug addresses an issue with Transparent Huge Pages (THP) and thread stack allocation.
Backport is unclean, 

**1. Backport:**
The fix in os_linux.cpp cannot be cleanly backported.
Since jdk11 does not include JDK-8244752 and JDK-8256155, it differs from the fix in jdk17. It uses setup_large_page_size() instead of scan_default_large_page_size().


**2. Bug Reproduction:**
The bug was successfully reproduced in Linux x86_64 with THP enabled (`/sys/kernel/mm/transparent_hugepage/enabled = always`).
Reproduction was confirmed using the following dummy thread program: 

public class ThreadStackHugePageTest {
        public static void main(String[] args) {
                final int NUM_THREADS = 1000;
                final long SLEEP_SECONDS = 3600;
                final long SLEEP_MILISECONDS = SLEEP_SECONDS * 1000;

                List<Thread> threads = new ArrayList<>();

                for (int i = 0; i < NUM_THREADS; i++) {
                        Runnable task = () -> {
                                try {
                                        Thread.sleep(SLEEP_MILISECONDS);
                                } catch (InterruptedException e) {
                                        Thread.currentThread().interrupt();
                                }
                        };

                        Thread thread = new Thread(task);
                        threads.add(thread);

                        thread.start();
                }

                System.out.println("all threads are started");

                for (Thread thread : threads) {
                        try {
                                thread.join();
                        } catch (InterruptedException e) {
                                Thread.currentThread().interrupt();
                        }
                }
        }
}

The fix significantly reduces the number of anonymous regions with fully occupied RSS.

**3. Regression Testing:**
I ran the `test/hotspot` tests on Linux x64 as a regression test. No failures were found.

Thank you.

-------------

Commit messages:
 - 8303215: Make thread stacks not use huge pages

Changes: https://git.openjdk.org/jdk11u-dev/pull/3106/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk11u-dev&pr=3106&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8303215
  Stats: 27 lines in 2 files changed: 23 ins; 3 del; 1 mod
  Patch: https://git.openjdk.org/jdk11u-dev/pull/3106.diff
  Fetch: git fetch https://git.openjdk.org/jdk11u-dev.git pull/3106/head:pull/3106

PR: https://git.openjdk.org/jdk11u-dev/pull/3106


More information about the jdk-updates-dev mailing list