JDK8 32-bit "docs" build fails on 64-bit Windows

Dmitry Samersoff Dmitry.Samersoff at oracle.com
Fri Oct 28 13:47:41 UTC 2011


Volker,

under UNIX :

file /opt/jdk7/bin/java | grep 32-bit

give you an information about launcher

-Dmitry

On 2011-10-28 17:23, Volker Simonis wrote:
> Using
> 
> MAX_VM_MEMORY = max (MAX_VM_MEMORY, 1024)
> 
> as proposed by Ivan will always result in MAX_VM_MEMORY being 1024
> because MAX_VM_MEMORY is only assigned in jdk/make/common/shared/Platform.gmk to
> be either 384 or 512.
> 
> By the way, I think that logic is wrong as well, because it always
> sets MAX_VM_MEMORY
> to 512 if it only could figure out the amount of memory on the machine
> (MB_OF_MEMORY) - no
> difference if that amount is less than or bigger than 512mb. This has
> probably only not been
> detected until now because I assume there are few Windows build
> machines with less than
> 512mb memory nowadays:)
> 
> So back to our problem: I think MAX_VM_MEMORY should be set depending
> of the bootstrap JDK
> (because that's the JDK actually used to compile the javadoc files).
> If the bootstrap JDK is a 64-bit JDK, the value of MAX_VM_MEMORY
> should be set to 1024
> otherwise it should be set to 512 which is apparently enough for a 32-bit JDK.
> 
> I only don't know how to elegantly find out what kind of bootstrap JDK
> we are using. I know that
> we could query the (non-standard) system property
> "sun.arch.data.model" or the standard system
> property "os.arch" (which has a non-standardized output:). But this
> requires the launch of the VM.
> 
> Does anybody know a smarter way to find out what kind of VM we are
> bootstrapping with?
> Or perhaps this information is already stored in one of the many make
> variables which are floating around?
> 
> Regards,
> Volker
> 
> On Thu, Oct 27, 2011 at 7:24 PM, Dmitry Samersoff
> <Dmitry.Samersoff at oracle.com> wrote:
>> Kelly,
>>
>> AFAIK, this problem was solved on win2k time so (IMHO) we should try.
>>
>> -Dmitry
>>
>> On 2011-10-27 21:13, Kelly O'Hair wrote:
>>> As I recall, on Windows, if we change to 1024, it's possible the VM will not startup if the
>>> machine doesn't have a hole that big in it's virtual memory. So if we change to 1024, we could
>>> rule out people with a fragmented memory system, like running NetBeans and FireFox and 100's of
>>> useless Windows services. :^(
>>> So it's ok with me to say jdk8 requires a 2GB system to build, but even with 2GB, this 1024 could
>>> block some people from building.
>>>
>>> My tendency is to make the default NO_DOCS=true, maybe just on Windows for now,
>>> but that might mean missing javadoc errors.
>>>
>>> -kto
>>>
>>> On Oct 27, 2011, at 9:41 AM, Volker Simonis wrote:
>>>
>>>> I've just realized that building the JDK documentation for a 32-bit
>>>> build of JDK8 on Windows (with JDK7 as bootstrap JDK) fails:
>>>>
>>>> C:/OpenJDK/jdk1.7.0_01/bin/java -XX:-PrintVMOptions
>>>> -XX:+UnlockDiagnosticVMOptions -XX:-LogVMOutput -client -Xmx512m
>>>> -Xms512m -XX:PermSize=32m -XX:MaxPermSize=160m
>>>> "-Xbootclasspath/p:C:/OpenJDK/output_x86/langtools/dist/bootstrap/lib/javadoc.jar;C:/OpenJDK/output_x86/langtools/dist/bootstrap/lib/javac.jar;C:/OpenJDK/output_x86/langtools/dist/bootstrap/lib/doclets.jar"
>>>> -jar C:/OpenJDK/output_x86/langtools/dist/bootstrap/lib/javadoc.jar
>>>> -bootclasspath c:/OpenJDK/output_x86/classes  -d
>>>> c:/OpenJDK/output_x86/docs/api \
>>>> @c:/OpenJDK/output_x86/tmp/docs/doctmp/coredocs.options
>>>> @c:/OpenJDK/output_x86/tmp/docs/doctmp/coredocs.packages
>>>> ..\..\src\share\classes\java\lang\invoke\MethodHandle.java:392:
>>>> warning - Tag @link: reference not found: Objects.equals
>>>> java.util.Objects#equals
>>>> c:\OpenJDK\output_x86\impsrc\javax\xml\bind\JAXBContext.java:262:
>>>> warning - Tag @see: reference not found: S 7.4.1 "Named Packages" in
>>>> Java Language Specification</a>
>>>> javadoc: error - java.lang.OutOfMemoryError: Please increase memory.
>>>> For example, on the JDK Classic or HotSpot VMs, add the option -J-Xmx
>>>> such as -J-Xmx32m.
>>>> 1 error
>>>> 2 warnings
>>>>
>>>>> From the error it seems as if this can also happen on other platforms.
>>>> The problem is caused by the following setting in jdk/make/docs/Makefile:
>>>>
>>>>       67 # We override whatever the max VM memory setting is here.
>>>>       68 #    NOTE: javadoc will not complete without these larger settings.
>>>>       69 #    WARNING: This could cause thrashing on low memory machines.
>>>>       70 ifeq ($(ARCH_DATA_MODEL),64)
>>>>       71   MAX_VM_MEMORY = 1024
>>>>       72 else
>>>>       73   MAX_VM_MEMORY = 512
>>>>       74 endif
>>>>
>>>> The 64-bit build succeeded without a problem, so apparently 1024m
>>>> seems to be big enough.
>>>>
>>>> I think the problem is that I'm trying to build a 32-bit VM on a
>>>> 64-bit Windows OS, so I set ARCH_DATA_MODEL to '32'.
>>>> I know that the README mentions that 32-bit compiles are not supported
>>>> on 64-bit OSes, but besides this problem, everything else works fine,
>>>> so I think this should be fixed.
>>>>
>>>> Regards,
>>>> Volker
>>>
>>
>>
>> --
>> Dmitry Samersoff
>> Java Hotspot development team, SPB04
>> * There will come soft rains ...
>>


-- 
Dmitry Samersoff
Java Hotspot development team, SPB04
* There will come soft rains ...



More information about the build-dev mailing list