Live data from Hacker News

Eclipse OpenJ9 – Open-source JVM

github.com

61–70 of 105 posts

Re: Eclipse OpenJ9 – Open-source JVM

#61

Let's get straight to the really important question, can J9 or AOT help maybe just a little with clojure startup time woes?

I tried some quick tests using a fully AOT, short-running thing we run in house. Here the cost is the set-up of JVM and loading of Clojure stuff (CentOS 7 Vagrant VM on my Mac).

J9:

time ./jdk-9+181/bin/java -client -jar l2i-0.1.0-SNAPSHOT-standalone.jar

real 0m1.987s user 0m3.383s sys 0m0.161s

time ./jdk-9+181/bin/java -server -jar l2i-0.1.0-SNAPSHOT-standalone.jar

real 0m2.949s user 0m5.452s sys 0m0.167s

OpenJDK 8:

[root@localhost ~]# time java -server -jar l2i-0.1.0-SNAPSHOT-standalone.jar

real 0m1.545s user 0m2.510s sys 0m0.175s

time java -client -jar l2i-0.1.0-SNAPSHOT-standalone.jar

real 0m1.456s user 0m2.309s sys 0m0.182s

----

For whatever it means, this is a repeated execution of 10 runs together for J9:

real 0m17.341s user 0m26.783s sys 0m1.344s

And this is the same thing for openjdk version "1.8.0_144"

real 0m15.169s user 0m24.573s sys 0m1.711s

So I'd say that the answer to your question is is no, they are in the same class for a short-running Clojure app dominated by startup times, unless there is some special tweak.

Re: Eclipse OpenJ9 – Open-source JVM

#62

Earlier quoted context omitted.

Java does memory recovery strictly by garbage collection. To delete an object remove all references to that object and wait. A "delete now" operation imposes requirements on implementations that are not strictly required. Any advantages gained from destructors can be realized via explicit cleanup methods and (as a hedge against mis-use) state checking for initialized and destroyed objects. A delete operation also add…

Would it be impossible (or prohibitively difficult) to add it to an implementation, though?

Prohibitively difficult. If you really truly need delete then you really truly don't need Java and should use something like C.

Re: Eclipse OpenJ9 – Open-source JVM

#63
post #42
post #36

Earlier quoted context omitted.

The RTSJ solution is to simply pre-allocate everything you could ever want and reuse that. That’s horrible to use for game development.

I'm not a game developer, so why is that horrible? consider I have an array/map of my game objects and the rest only works with methods, so most stuff does not lie on the heap, well that means basically no strings, since they would add to heap memory aswell, but only using basic datatypes and arrays. why would some kind of that be problematic? I mean graphics programmic is kind of new to me, but considering that you…

> why would some kind of that be problematic? I mean graphics programmic is kind of new to me, but considering that you could offload that to a c/c++ engine via jni (that's another horrible thing of some kind), but just the game code itself doesn't seems to be to bad, does it?

The whole point is not to offload anything. If you need to offload anything, even the render loop, the language has failed.

Re: Eclipse OpenJ9 – Open-source JVM

#64
post #60
post #36

Earlier quoted context omitted.

The RTSJ solution is to simply pre-allocate everything you could ever want and reuse that. That’s horrible to use for game development.

> The RTSJ solution is to simply pre-allocate everything you could ever want and reuse that. That's not the RTSJ solution. RTSJ uses arenas, which are great if you have regular allocation/deallocation cycles, like, say, a frame in a game.

> That's not the RTSJ solution. RTSJ uses arenas, which are great if you have regular allocation/deallocation cycles, like, say, a frame in a game.

So how do I get a user’s Oracle JRE installation to use arenas? The only realistic scenario is to preallocate and reuse.

Re: Eclipse OpenJ9 – Open-source JVM

#65
post #61

Let's get straight to the really important question, can J9 or AOT help maybe just a little with clojure startup time woes?

I tried some quick tests using a fully AOT, short-running thing we run in house. Here the cost is the set-up of JVM and loading of Clojure stuff (CentOS 7 Vagrant VM on my Mac). J9: time ./jdk-9+181/bin/java -client -jar l2i-0.1.0-SNAPSHOT-standalone.jar real 0m1.987s user 0m3.383s sys 0m0.161s time ./jdk-9+181/bin/java -server -jar l2i-0.1.0-SNAPSHOT-standalone.jar real 0m2.949s user 0m5.452s sys 0m0.167s OpenJDK 8:…

Maybe I'm missing something or I'm just blind but where is there AOT compilation in your example since you seem to run the same jar with the same command-line options.

That said I'm not that surprised that class aot compilation didn't really speed up a clojure app.

Re: Eclipse OpenJ9 – Open-source JVM

#66
post #61

Let's get straight to the really important question, can J9 or AOT help maybe just a little with clojure startup time woes?

I tried some quick tests using a fully AOT, short-running thing we run in house. Here the cost is the set-up of JVM and loading of Clojure stuff (CentOS 7 Vagrant VM on my Mac). J9: time ./jdk-9+181/bin/java -client -jar l2i-0.1.0-SNAPSHOT-standalone.jar real 0m1.987s user 0m3.383s sys 0m0.161s time ./jdk-9+181/bin/java -server -jar l2i-0.1.0-SNAPSHOT-standalone.jar real 0m2.949s user 0m5.452s sys 0m0.167s OpenJDK 8:…

Thanks for checking, even if the result is not as we hoped.

Re: Eclipse OpenJ9 – Open-source JVM

#68
post #61

Let's get straight to the really important question, can J9 or AOT help maybe just a little with clojure startup time woes?

I tried some quick tests using a fully AOT, short-running thing we run in house. Here the cost is the set-up of JVM and loading of Clojure stuff (CentOS 7 Vagrant VM on my Mac). J9: time ./jdk-9+181/bin/java -client -jar l2i-0.1.0-SNAPSHOT-standalone.jar real 0m1.987s user 0m3.383s sys 0m0.161s time ./jdk-9+181/bin/java -server -jar l2i-0.1.0-SNAPSHOT-standalone.jar real 0m2.949s user 0m5.452s sys 0m0.167s OpenJDK 8:…

The OpenJ9 infrastructure is somewhat different [for the better] than what I'm used to using internally, but I have only ever seen the shared class cache enabled when the -Xshareclasses [1] option is passed to the JVM. Do these numbers change significantly (especially after a warm-up run) if you add that option to J9's option set?

[1] https://www.ibm.com/support/knowledgecenter/en/SSYKE2_8.0.0/...

Re: Eclipse OpenJ9 – Open-source JVM

#69

Earlier quoted context omitted.

How so? There was BEA JRockIT, IBM J9, Azuul, Oracle and HP also have a JVM iirc.

I've been a Java dev for a decade, and I never once used anything but Sun / Oracle's version (now OpenJDK, which is almost the same thing). I really have no idea who ever used these other JVM implementations. I'm guessing it would be companies with specialized hardware such as IBM mainframes or finance firms paying a lot of money to squeeze out performance with WebLogic. Either because of poor marketing or some other…

At least Websphere 6 was using IBM JVM. Not sure if they still do this.

We had to use the IBM JVM for running tests and precomputing stuff, otherwise stuff wasn't working.

Re: Eclipse OpenJ9 – Open-source JVM

#70
post #69

Earlier quoted context omitted.

I've been a Java dev for a decade, and I never once used anything but Sun / Oracle's version (now OpenJDK, which is almost the same thing). I really have no idea who ever used these other JVM implementations. I'm guessing it would be companies with specialized hardware such as IBM mainframes or finance firms paying a lot of money to squeeze out performance with WebLogic. Either because of poor marketing or some other…

At least Websphere 6 was using IBM JVM. Not sure if they still do this. We had to use the IBM JVM for running tests and precomputing stuff, otherwise stuff wasn't working.

Websfear 8.5 still is using it (as of last year when I had a gig at an insurer).
Post reply on HN