Hi Jacques, So it seems for Oracle's JVM the only place where this makes an impact is in Windows 32 bit architectures.
I am not sure, but I think it would be better not to pass the flag. Why? Because the documentation provided by Oracle states that if you omit -server then the JVM will decide based on hardware spects, more specificailly: "For Java SE 6, the definition of a *server-class* machine is one with at least 2 CPUs and at least 2GB of physical memory. " Reference below with grid. http://docs.oracle.com/javase/8/docs/technotes/guides/vm/server-class.html So if you omit the -server flag on an old piece of hardware, then it will consider it a client. and the main difference between client and server has to do with the JIT compiler and startup time vs memory management (server has more over head but more optimization long term). It makes sense not to consider old hardware as server to avoid the overhead. The only exception, again, is windows 32. Again not sure but I suspect we do not have a lot of new hardware Windows 32 servers running OFBiz, but I could be wrong of course. Regards, Taher Alkhateeb On Thu, Jun 9, 2016 at 8:28 PM, Jacques Le Roux < [email protected]> wrote: > Hi, > > I was reading "Java Concurrency in Practice" (again!) when I (again!) > stumbled upon the 6th footnote p. 38 (my edition is from 2011) > > You can find a summary at > https://www.goodreads.com/work/quotes/123207-java-concurrency-in-practice > : > > “Debugging tip: For server applications, be sure to always specify the > -server JVM command line switch when invoking the JVM, even for > development and testing. The server JVM performs more optimization than > the client JVM, such as hoisting variables out of a loop that are not > modified in the loop; code that might appear to work in the development > environment (client JVM) can break in the deployment environment (server > JVM)...(more explanation and examples)” > > Since this book was written in 2006 for Java 5, I checked what the > situation is with Java 8 > > http://www.oracle.com/technetwork/java/hotspotfaq-138619.html#compiler_types > > http://blog.sokolenko.me/2014/11/javavm-options-production.html#make-server-a-server > > Oracle says > > “Since Java SE 5.0, with the exception of 32-bit Windows, the server VM > will automatically be selected on server-class machines. The definition of > a server-class machine may change from release to release, so please check > the appropriate ergonomics document for the definition for your release. > For 5.0, it'sErgonomics in the 5.0 Java[tm] Virtual Machine < > http://www.oracle.com/technetwork/java/ergo5-140223.html>.” > > Hence Sokolenko's comment: > > “Though this option is implicitely enabled for x64 virtual machines, it > still makes sense to use it as according to documentation behaviour > maybe changed in the future.” > > So this is still true and I wonder if we should not add this option (and > some others, see Sokolenko's link above) in some ant targets like "start" > > Opinions? > > Jacques > >
