Hallo,
ich lese ca 570000 Datensätze ein. Das funktioniert hier auch gut:
Das funktioniert soweit auch!
Allerdings geht er danach im Codetext nicht mehr weiter, sonder bleibt in einem Finalize hängen. (Ist mir erst beim Debuggen aufgefallen)
und der Teil hier
Jemand ne idee?
mfG henpara
ich lese ca 570000 Datensätze ein. Das funktioniert hier auch gut:
Java:
public void readAllData() throws IOException {
int linecount = 0;
File readfile1 = new File(".\\bin\\data\\C00-C20.txt");
File readfile2 = new File(".\\bin\\data\\C21-C49.txt");
File readfile3 = new File(".\\bin\\data\\C50-C64.txt");
File readfile4 = new File(".\\bin\\data\\C65-C90.txt");
File readfile5 = new File(".\\bin\\data\\C91-CAll.txt");
FileReader freader = new FileReader(readfile1);
BufferedReader breader = new BufferedReader(freader, 65536);
String readline = breader.readLine();
Dataset myData = new Dataset();
while (readline!=null) {
linecount++;
if (linecount%10000==0) {
System.out.println("Wir sind in Zeile: " + linecount);
}
//readline = breader.readLine();
int counter = 0;
while (readline.contains("\t")) {
counter++;
int tab = readline.indexOf("\t".charAt(0));
while (tab != -1) {
String sub = readline.substring(0, tab);
readline = readline.substring(tab+1, readline.length());
switch(counter) {
//Hier wird der Datensatz eingelesen
}
tab = readline.indexOf("\t".charAt(0));
counter++;
}
myData.setasterix(readline);
myData.setdatensatznummer(linecount);
mydata.add(myData);
}
readline = breader.readLine();
}
freader = new FileReader(readfile2);
breader = new BufferedReader(freader, 65536);
readline = breader.readLine();
while (readline!=null) {
linecount++;
if (linecount%10000==0) {
System.out.println("Wir sind in Zeile: " + linecount);
}
//readline = breader.readLine();
int counter = 0;
while (readline.contains("\t")) {
counter++;
int tab = readline.indexOf("\t".charAt(0));
while (tab != -1) {
String sub = readline.substring(0, tab);
readline = readline.substring(tab+1, readline.length());
switch(counter) {
//Hier wird der Datensatz eingelesen
}
tab = readline.indexOf("\t".charAt(0));
counter++;
}
myData.setasterix(readline);
myData.setdatensatznummer(linecount);
myData.setdatensatzid(Long.valueOf(((String.valueOf(myData.getpop_number()) + String.valueOf(myData.getcancer_number()) + String.valueOf(myData.getage_group()) + String.valueOf(myData.getsex() + "10")))));
mydata.add(myData);
}
readline = breader.readLine();
}
freader = new FileReader(readfile3);
breader = new BufferedReader(freader, 65536);
readline = breader.readLine();
while (readline!=null) {
linecount++;
if (linecount%10000==0) {
System.out.println("Wir sind in Zeile: " + linecount);
}
//readline = breader.readLine();
int counter = 0;
while (readline.contains("\t")) {
counter++;
int tab = readline.indexOf("\t".charAt(0));
while (tab != -1) {
String sub = readline.substring(0, tab);
readline = readline.substring(tab+1, readline.length());
switch(counter) {
//Hier wird der Datensatz eingelesen
}
tab = readline.indexOf("\t".charAt(0));
counter++;
}
myData.setasterix(readline);
myData.setdatensatznummer(linecount);
myData.setdatensatzid(Long.valueOf((String.valueOf(myData.getpop_number()) + String.valueOf(myData.getcancer_number()) + String.valueOf(myData.getage_group()) + String.valueOf(myData.getsex() + "10"))));
mydata.add(myData);
}
readline = breader.readLine();
}
freader = new FileReader(readfile4);
breader = new BufferedReader(freader, 65536);
readline = breader.readLine();
while (readline!=null) {
linecount++;
if (linecount%10000==0) {
System.out.println("Wir sind in Zeile: " + linecount);
}
//readline = breader.readLine();
int counter = 0;
while (readline.contains("\t")) {
counter++;
int tab = readline.indexOf("\t".charAt(0));
while (tab != -1) {
String sub = readline.substring(0, tab);
readline = readline.substring(tab+1, readline.length());
switch(counter) {
//Hier wird der Datensatz eingelesen
}
tab = readline.indexOf("\t".charAt(0));
counter++;
}
myData.setasterix(readline);
myData.setdatensatznummer(linecount);
myData.setdatensatzid(Long.valueOf((String.valueOf(myData.getpop_number()) + String.valueOf(myData.getcancer_number()) + String.valueOf(myData.getage_group()) + String.valueOf(myData.getsex() + "10"))));
mydata.add(myData);
}
readline = breader.readLine();
}
freader = new FileReader(readfile5);
breader = new BufferedReader(freader, 65536);
readline = breader.readLine();
while (readline!=null) {
linecount++;
if (linecount%10000==0) {
System.out.println("Wir sind in Zeile: " + linecount);
}
//readline = breader.readLine();
int counter = 0;
while (readline.contains("\t")) {
counter++;
int tab = readline.indexOf("\t".charAt(0));
while (tab != -1) {
String sub = readline.substring(0, tab);
readline = readline.substring(tab+1, readline.length());
switch(counter) {
//Hier wird der Datensatz eingelesen.
}
tab = readline.indexOf("\t".charAt(0));
counter++;
}
myData.setasterix(readline);
myData.setdatensatznummer(linecount);
myData.setdatensatzid(Long.valueOf((String.valueOf(myData.getpop_number()) + String.valueOf(myData.getcancer_number()) + String.valueOf(myData.getage_group()) + String.valueOf(myData.getsex() + "10"))));
mydata.add(myData);
}
readline = breader.readLine();
}
System.out.println("Wir sind in Zeile: " + linecount);
breader.close();
freader.close();
System.out.println("Reader geschlossen, Daten eingelesen");
}
Das funktioniert soweit auch!
Allerdings geht er danach im Codetext nicht mehr weiter, sonder bleibt in einem Finalize hängen. (Ist mir erst beim Debuggen aufgefallen)
Java:
private void runFinalizer() {
synchronized (this) {
if (hasBeenFinalized()) return;
remove();
}
try {
Object finalizee = this.get();
if (finalizee != null && !(finalizee instanceof java.lang.Enum)) {
invokeFinalizeMethod(finalizee);
/* Clear stack slot containing this variable, to decrease
the chances of false retention with a conservative GC */
finalizee = null;
}
} catch (Throwable x) { }
super.clear();
}
Java:
public void run() {
for (;;) {
try {
Finalizer f = (Finalizer)queue.remove();
f.runFinalizer();
} catch (InterruptedException x) {
continue;
}
}
}
}
mfG henpara