Goal: Either to determine the bit width in a Java program or use a 64 bit data model JVM.
OS: SunX Solaris 64 bit OS.
JVMBitSize.java
build.xml
ant
To run program:
OS: SunX Solaris 64 bit OS.
- First of all install 32 bit JDK/JRE (steps 1 and 2 are valid for JDK 1.6)
- Then add 64 bit packages over it. This will convert the JDK to work in both 32 bit and 64 bit modes (but 32 bit is still default).
- To test it for 32 bit, run $ java -version
- To test it for 64 bit, run $ java -d64 -version
- In ant binary file (in bin folder of apache-ant) add line ANT_OPTS="$ANT_OPTS -d64"
- If you do not want to change ant binary file, then you can set the environment variable every time you run the ant command. For e.g. setenv ANT_OPTS -d64
- Next you add instructions in build.xml file used by ant. In Java/JUnit tags, add property clonevm="true" if you have fork="true" property. This will clone the same VM environment for all forked processes, as for ant process itself. clonevm will not have any effect if fork is false.
- Run you ant target.
JVMBitSize.java
class JVMBitSize { private static int jvmBit = 32; public static void main(String args[]) { String sysProp = System.getProperty("sun.arch.data.model"); System.out.println(sysProp); if(sysProp != null) { try { jvmBit = Integer.parseInt(sysProp.trim()); System.out.println("JVMBit = " + jvmBit); } catch(NumberFormatException e) { System.out.println(e.getMessage()); } } } }
build.xml
<project name=" JVMBitSize " default="run" basedir="."> <path id="JVMBitSize.classpath"> <path location="${basedir}"/> </path> <target name="compile"> <javac srcdir="."/> </target> <target name="run" depends="compile"> <echo level="info" message="JVM bit size in ant, before java task: ${sun.arch.data.model}"/> <java classname=" JVMBitSize" fork="true" clonevm="true"> <classpath refid="JVMBitSize.classpath"/> </java> </target> </project>
ant
#So that 64 bit data model of JVM is used and no java.lang.OutOfMemoryError exceptions are thrown ANT_OPTS="$ANT_OPTS -Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m -d64"
To run program:
$ant run
Comments