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