#!/bin/bash

javac=/opt/java/oracle/jdk6/bin/javac
java6=/opt/java/oracle/jdk6/bin/java
java8=/opt/java/oracle/jdk8/bin/java

error() {
  echo "$1" >&2
  exit 1
}

rm -f *.class || error "Could not clear compiled files"

"$javac" Garbage.java || error "Could not compile"

gc_log_opts="-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:+PrintHeapAtGC -Xloggc:gc-$1-$2-$(date +%s).log"

if [[ "$1" == "6" ]]; then
  "$java6" -Xms5g -Xmx5g -XX:NewSize=2g -XX:MaxNewSize=2g -XX:StringTableSize=5834701 \
           -XX:PermSize=1g -XX:MaxPermSize=1g $gc_log_opts Garbage $2
elif [[ "$1" == "8" ]]; then
  "$java8" -Xms6g -Xmx6g -XX:NewSize=2g -XX:MaxNewSize=2g -XX:StringTableSize=5834701 -XX:-UseParallelOldGC \
           $gc_log_opts Garbage $2
else
  error "Must specify Java version"
fi
