/*
This file is part of JOP, the Java Optimized Processor
see <http://www.jopdesign.com/>
Copyright (C) 2001-2008, Martin Schoeberl (martin@jopdesign.com)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* Created on 09.12.2005
*
*/
package gctest;
import util.Timer;
import joprt.RtThread;
import com.jopdesign.sys.GC;
public class Periodic {
static final int SIZE = 1000;
// static int[] ia;
/**
* @param args
*/
public static void main(String[] args) {
new RtThread(2, 50000) {
public void run() {
int i, iteration = 0;
// This does not work because we don't get the
// roots from the other threads!
int [] ia = null;
waitForNextPeriod();
for (;;) {
if (ia!=null) {
for (i=0; i<SIZE; ++i) {
if (ia[i] != iteration*SIZE + i) {
System.out.println("GC Error");
System.exit(-1);
}
}
}
++iteration;
System.out.print("Alloc");
ia = new int[SIZE];
for (i=0; i<SIZE; ++i) {
ia[i] = iteration*SIZE + i;
}
waitForNextPeriod();
}
}
};
new RtThread(3, 20000) {
public void run() {
for (;;) {
System.out.print("m=");
System.out.print(GC.freeMemory());
waitForNextPeriod();
}
}
};
//
// GC thread
//
new RtThread(1, 500000) {
public void run() {
GC.setConcurrent();
for (;;) {
System.out.print("G");
GC.gc();
waitForNextPeriod();
}
}
};
GC.gc();
RtThread.startMission();
// sleep
for (int i=0;i<5;++i) {
System.out.print("M");
Timer.wd();
RtThread.sleepMs(1000);
}
System.exit(0);
}
}