Skip to content

Commit

Permalink
8325496: Make TrimNativeHeapInterval a product switch
Browse files Browse the repository at this point in the history
Backport-of: d31fd78d963d5d103b1b1bf66ae0bdbe4be2b790
  • Loading branch information
MBaesken committed Feb 27, 2024
1 parent 1b7c5af commit 4296ddf
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 13 deletions.
4 changes: 2 additions & 2 deletions src/hotspot/share/runtime/globals.hpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
Expand Down Expand Up @@ -1976,7 +1976,7 @@ const int ObjectAlignmentInBytes = 8;
"2: monitors & new lightweight locking (LM_LIGHTWEIGHT)") \
range(0, 2) \
\
product(uint, TrimNativeHeapInterval, 0, EXPERIMENTAL, \
product(uint, TrimNativeHeapInterval, 0, \
"Interval, in ms, at which the JVM will trim the native heap if " \
"the platform supports that. Lower values will reclaim memory " \
"more eagerly at the cost of higher overhead. A value of 0 " \
Expand Down
13 changes: 12 additions & 1 deletion src/java.base/share/man/java.1
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.\" Copyright (c) 1994, 2022, Oracle and/or its affiliates. All rights reserved.
.\" Copyright (c) 1994, 2024, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
Expand Down Expand Up @@ -1446,6 +1446,17 @@ usage by individual \f[V]CallSite\f[R], individual virtual memory region
and its committed regions.
.RE
.TP
\f[V]-XX:TrimNativeHeapInterval=\f[R]\f[I]millis\f[R]
Interval, in ms, at which the JVM will trim the native heap.
Lower values will reclaim memory more eagerly at the cost of higher
overhead.
A value of 0 (default) disables native heap trimming.
Native heap trimming is performed in a dedicated thread.
.RS
.PP
This option is only supported on Linux with GNU C Library (glibc).
.RE
.TP
\f[V]-XX:+NeverActAsServerClassMachine\f[R]
Enable the \[dq]Client VM emulation\[dq] mode which only uses the C1 JIT
compiler, a 32Mb CodeCache and the Serial GC.
Expand Down
6 changes: 3 additions & 3 deletions test/hotspot/jtreg/gtest/NativeHeapTrimmerGtest.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*
* Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2023 Red Hat, Inc. All rights reserved.
* Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2023, 2024, Red Hat, Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
Expand Down Expand Up @@ -29,5 +29,5 @@
* @modules java.base/jdk.internal.misc
* java.xml
* @requires vm.flagless
* @run main/native GTestWrapper --gtest_filter=os.trim* -Xlog:trimnative -XX:+UnlockExperimentalVMOptions -XX:TrimNativeHeapInterval=100
* @run main/native GTestWrapper --gtest_filter=os.trim* -Xlog:trimnative -XX:TrimNativeHeapInterval=100
*/
14 changes: 7 additions & 7 deletions test/hotspot/jtreg/runtime/os/TestTrimNative.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/*
* Copyright (c) 2023 SAP SE. All rights reserved.
* Copyright (c) 2023 Red Hat, Inc. All rights reserved.
* Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2023, 2024, Red Hat, Inc. All rights reserved.
* Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
Expand Down Expand Up @@ -270,7 +270,7 @@ public static void main(String[] args) throws Exception {
long trimInterval = 500; // twice per second
long ms1 = System.currentTimeMillis();
OutputAnalyzer output = runTestWithOptions(
new String[] { "-XX:+UnlockExperimentalVMOptions", "-XX:TrimNativeHeapInterval=" + trimInterval },
new String[] { "-XX:TrimNativeHeapInterval=" + trimInterval },
new String[] { TestTrimNative.Tester.class.getName(), "5000" }
);
long ms2 = System.currentTimeMillis();
Expand All @@ -285,7 +285,7 @@ public static void main(String[] args) throws Exception {

case "trimNativeHighInterval": {
OutputAnalyzer output = runTestWithOptions(
new String[] { "-XX:+UnlockExperimentalVMOptions", "-XX:TrimNativeHeapInterval=" + Integer.MAX_VALUE },
new String[] { "-XX:TrimNativeHeapInterval=" + Integer.MAX_VALUE },
new String[] { TestTrimNative.Tester.class.getName(), "5000" }
);
checkExpectedLogMessages(output, true, Integer.MAX_VALUE);
Expand All @@ -297,7 +297,7 @@ public static void main(String[] args) throws Exception {
case "trimNativeLowIntervalStrict": {
long ms1 = System.currentTimeMillis();
OutputAnalyzer output = runTestWithOptions(
new String[] { "-XX:+UnlockExperimentalVMOptions", "-XX:TrimNativeHeapInterval=1" },
new String[] { "-XX:TrimNativeHeapInterval=1" },
new String[] { TestTrimNative.Tester.class.getName(), "0" }
);
long ms2 = System.currentTimeMillis();
Expand All @@ -308,7 +308,7 @@ public static void main(String[] args) throws Exception {

case "testOffOnNonCompliantPlatforms": {
OutputAnalyzer output = runTestWithOptions(
new String[] { "-XX:+UnlockExperimentalVMOptions", "-XX:TrimNativeHeapInterval=1" },
new String[] { "-XX:TrimNativeHeapInterval=1" },
new String[] { "-version" }
);
checkExpectedLogMessages(output, false, 0);
Expand All @@ -319,7 +319,7 @@ public static void main(String[] args) throws Exception {

case "testOffExplicit": {
OutputAnalyzer output = runTestWithOptions(
new String[] { "-XX:+UnlockExperimentalVMOptions", "-XX:TrimNativeHeapInterval=0" },
new String[] { "-XX:TrimNativeHeapInterval=0" },
new String[] { "-version" }
);
checkExpectedLogMessages(output, false, 0);
Expand Down

3 comments on commit 4296ddf

@openjdk-notifier
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@MBaesken
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/backport jdk17u-dev

@openjdk
Copy link

@openjdk openjdk bot commented on 4296ddf Feb 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@MBaesken Could not automatically backport 4296ddfc to openjdk/jdk17u-dev due to conflicts in the following files:

  • src/java.base/share/man/java.1
  • test/hotspot/jtreg/gtest/NativeHeapTrimmerGtest.java

Please fetch the appropriate branch/commit and manually resolve these conflicts by using the following commands in your personal fork of openjdk/jdk17u-dev. Note: these commands are just some suggestions and you can use other equivalent commands you know.

# Fetch the up-to-date version of the target branch
$ git fetch --no-tags https://git.openjdk.org/jdk17u-dev.git master:master

# Check out the target branch and create your own branch to backport
$ git checkout master
$ git checkout -b backport-MBaesken-4296ddfc

# Fetch the commit you want to backport
$ git fetch --no-tags https://git.openjdk.org/jdk21u-dev.git 4296ddfc6336f062e92fdfdc3b41ca20da26a126

# Backport the commit
$ git cherry-pick --no-commit 4296ddfc6336f062e92fdfdc3b41ca20da26a126
# Resolve conflicts now

# Commit the files you have modified
$ git add files/with/resolved/conflicts
$ git commit -m 'Backport 4296ddfc6336f062e92fdfdc3b41ca20da26a126'

Once you have resolved the conflicts as explained above continue with creating a pull request towards the openjdk/jdk17u-dev with the title Backport 4296ddfc6336f062e92fdfdc3b41ca20da26a126.

Below you can find a suggestion for the pull request body:

Hi all,

This pull request contains a backport of commit 4296ddfc from the openjdk/jdk21u-dev repository.

The commit being backported was authored by Matthias Baesken on 27 Feb 2024 and had no reviewers.

Thanks!

Please sign in to comment.