RFR: 8311639: Replace currentTimeMillis() with nanoTime() in jtreg/gc
Albert Mingkun Yang
ayang at openjdk.org
Thu Aug 17 17:49:30 UTC 2023
On Thu, 17 Aug 2023 15:56:04 GMT, Leo Korinth <lkorinth at openjdk.org> wrote:
> I have removed usage of `currentTimeMillis()` in jtreg/gc as `currentTimeMillis()` is not monotonic. It is mostly changing from milliseconds to nanoseconds. In certain places, I have changed the code from something like `(instant1 < instant2)` to `(instant1 - instant2 < 0)` It might look like I am removing instant2 from both sides of the inequality and the result ought to be the same, but due to overflow arithmetic, the change should be better if nanoseconds where to overflow. I have also removed some loops where the loop is doing nothing except sleeping. I somewhat shortened the string in the key of a hash map because the nanosecond value made the string too long for the heap size.
>
> All tests within jtreg/gc passes.
test/hotspot/jtreg/gc/stress/systemgc/TestSystemGC.java line 80:
> 78: public void run() {
> 79: while (!shouldExit()) {
> 80: String prefix = "long" + (System.nanoTime() % 10000); // limit to 4 digits after changing from milliseconds to nanoseconds, else the key will use more memory
Is this used to calculate elapsed time? If not, I think using `currentTimeMillis` is fine.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/15331#discussion_r1297552208
More information about the hotspot-gc-dev
mailing list