Hi Jacques,

I don't have a strong opinion either way. If you think it improves things
that I don't see a reason why not to add it.

However, I'm not sure what you mean by correctness? The difference between
-server and -client as far as I understood it has to do with JIT and memory
management. Essentially you have more overhead and slower startup time in
-server to allow for better optimization of the application as a whole. I'm
not sure how this relates to correctness?

Regards,

Taher Alkhateeb

On Fri, Jun 10, 2016 at 2:33 PM, Jacques Le Roux <
[email protected]> wrote:

> Taher,
>
> That's right at the moment. The point, as Sokolenko made it, is this is
> not set in stone and could be changed later. It's  still not a strong
> argument I agree, but note that what initially worried me is not
> performance but correctness: the Brian Goetz's footnote.
>
> Also, I put the Sokolenko link and a title with a plural to options
> because I think we should also check the other options he suggests. Even if
> I agree, that most of the time it's not a good idea to change the default
> parameters
>
> So back to the main subject, really the correctness aspect is worrying,
> don't you think so?  Maybe it's not longer an issue with Java 8, but I did
> not search about that...
>
> Jacques
>
> Le 10/06/2016 à 09:40, Taher Alkhateeb a écrit :
>
>> 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
>>>
>>>
>>>
>

Reply via email to