1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Mitglieder
  3. beat

Beiträge von beat

  • memory leaks - woher?

    • beat
    • 23. Dezember 2007 um 16:53

    also das ist es sicher nicht, 1,2GB inaktiver ram der nicht mehr freigegeben wird ist einfach nicht normal. Was soll eigentlich der zweite satz?

  • memory leaks - woher?

    • beat
    • 23. Dezember 2007 um 15:41

    hallo

    hab mir ein kleines tool geschrieben mit dem ich verzeichnisstrukturen auf ein anderes spiegeln kann, also ein backup des baums machen kann.

    Das Problem ist dass sich aus irgendeinem grund der inaktive physikalische speicher immer weiter aufbläst und am schluss ca. 80% der gesicherten datenmenge ausmacht. Bei einem backup von 1,5Gb werden 1,2GB speicher inaktiv und werden auch nach beenden des Programmes vom os (os x 10.5.1) auch nicht wieder freigegeben. WTF? Das einzige wie ich mir das erklären könnte sind nicht geschlossene Streams, aber die schliesse ich alle brav.

    Hat wer eine idee was das verursachen könnte?

    Klasse die files kopiert:

    Java
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    
    import javax.swing.JProgressBar;
    
    
    public class FileManager {
    
    
    	public FileManager() {
    
    
    	}
    
    
    	/*
    	 * Kopiert das File source nach dest
    	 */
    
    
    	public boolean copy(File _source, File _dest) throws IOException {
    
    
    		File source = _source;
    		File dest = _dest;
    
    
    		if (source.isFile()) {
    
    
    			FileInputStream fis = new FileInputStream(source);
    			FileOutputStream fos = new FileOutputStream(dest);
    
    
    			if (!dest.exists())
    				dest.createNewFile();
    
    
    			byte buffer[] = new byte[65536]; // reading 65K blocks
    
    
    			long pos = 0;
    			int bytesToWrite = 0;
    
    
    			while (dest.length() < source.length()) {
    
    
    				bytesToWrite = fis.read(buffer, 0, 65536);
    
    
    				fos.write(buffer, 0, bytesToWrite);
    				pos += bytesToWrite;
    			}
    
    
    			fis.close();
    			fos.close();
    
    
    			if (dest.length() == source.length())
    				return true;
    
    
    		}
    		return false;
    
    
    	}
    
    
    	/*
    	 * Kopiert das File source nach dest und handled eine Progressbar (0% -
    	 * 100%);
    	 */
    
    
    	public boolean copy(File _source, File _dest, JProgressBar progressBar)
    			throws IOException {
    
    
    		File source = _source;
    		File dest = _dest;
    
    
    		if (source.isFile()) {
    
    
    			FileInputStream fis = new FileInputStream(source);
    			FileOutputStream fos = new FileOutputStream(dest);
    
    
    			if (!dest.exists())
    				dest.createNewFile();
    
    
    			byte buffer[] = new byte[65536]; // reading 65K blocks
    
    
    			progressBar.setIndeterminate(false);
    			progressBar.setValue(0);
    
    
    			long pos = 0;
    			int bytesToWrite = 0;
    
    
    			int barValue = 0;
    
    
    			int barSteps = -1;
    
    
    			int steps = 1;
    
    			try {
    				steps = (int) (source.length() / 100);
    
    
    			} catch (ArithmeticException ae) {
    
    
    			}
    
    
    			while (dest.length() < source.length()) {
    
    
    				bytesToWrite = fis.read(buffer, 0, 65536);
    				barSteps += bytesToWrite;
    
    				if (barSteps >= steps) {
    					progressBar.setValue(++barValue);
    					barSteps = -1;
    				}
    
    
    				fos.write(buffer, 0, bytesToWrite);
    				pos += bytesToWrite;
    			}
    
    
    			fis.close();
    			fos.close();
    
    
    			if (dest.length() == source.length()) {
    				progressBar.setValue(100);
    				return true;
    			}
    
    
    		}
    
    
    		return false;
    
    
    	}
    
    
    }
    Alles anzeigen

    Klasse die rekursiv den verzeichnisbaum durchgeht

    Java
    import java.io.File;
    import java.io.IOException;
    
    
    public class Processor implements Runnable {
    
    
    	Thread runner = null;
    	FileManager fileman;
    
    
    	long speicherplatz = 0;
    	int totalFileAmount = 1;
    	int backUpped = 1;
    	int filesVisited = 0;
    	float pValue = 0;
    	float x = 0;
    
    
    	File root;
    	File mirror;
    
    
    	public Processor(File root, File mirror) {
    
    
    		fileman = new FileManager();
    
    
    		this.root = root;
    		this.mirror = mirror;
    
    
    		if (runner == null) {
    			runner = new Thread(this);
    			runner.start();
    		}
    	}
    
    
    	public void start(File dir) {
    
    
    		BackupGUI.appendTextArea(dir.getAbsolutePath());
    
    		File[] files = dir.listFiles();
    
    
    		String tmp;
    
    
    		if (files.length > 0) {
    
    
    			for (int i = 0; i < files.length; i++) {
    
    
    				if (files[i].isFile() && !files[i].isHidden())
    					filesVisited++;
    
    
    				x = 100f / totalFileAmount;
    
    
    				BackupGUI.progress.setValue(Math.round(x * filesVisited));
    
    
    				tmp = files[i].getAbsolutePath().substring(
    						root.getAbsolutePath().length());
    
    
    				// System.out.println("TPM: " + tmp);
    
    
    				if (!new File(mirror + File.separator + tmp).exists())
    					backupFile(tmp, files[i]);
    
    
    				if (new File(mirror + File.separator + tmp).exists())
    					if (files[i].lastModified() > new File(mirror
    							+ File.separator + tmp).lastModified())
    						backupFile(tmp, files[i]);
    
    
    				/*
    				 * Rekursiver Aufruf
    				 */
    
    
    				if (files[i].isDirectory() && files[i].canRead()
    						&& files[i].exists())
    					start(files[i]);
    
    
    			}
    		}
    
    
    	}
    
    
    	private void backupFile(String directoryName, File file) {
    
    
    		// System.out.println(mirror +
    		// directoryName.substring(0,directoryName.lastIndexOf(File.separator)));
    		// System.out.println(mirror + " <<< >>> " +
    		// directoryName.substring(0,directoryName.lastIndexOf(File.separator)));
    
    
    		String newFile = "";
    		File f = new File(mirror
    				+ directoryName.substring(0, directoryName
    						.lastIndexOf(File.separator)));
    		f.mkdirs();
    
    
    		newFile = f.getAbsolutePath() + File.separator + file.getName();
    
    
    		File tmp = new File(newFile);
    
    
    		try {
    
    
    			if (file.length() <= 2000000l)
    				fileman.copy(file, tmp);
    			else
    				fileman.copy(file, tmp, BackupGUI.fileProgress);
    
    
    			speicherplatz += file.length();
    
    			if (file.isFile() && !file.isHidden()) {
    				backUpped++;
    				BackupGUI.setCorruptTagCounter(backUpped);
    			}
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    
    
    	}
    
    
    	public void countFiles(File dir) {
    
    
    		File[] files = dir.listFiles();
    
    
    		if (files.length > 0) {
    
    
    			for (int i = 0; i < files.length; i++) {
    
    
    				if (files[i].isFile() && !files[i].isHidden())
    					totalFileAmount++;
    
    
    				if ((totalFileAmount % 10) == 0) {
    
    
    					BackupGUI.setSongCounter(totalFileAmount);
    
    
    				}
    
    
    				if (files[i].isDirectory() && files[i].canRead()
    						&& files[i].exists())
    					countFiles(files[i]);
    
    
    			}
    		}
    
    
    	}
    
    
    	public void run() {
    
    
    		long start = System.currentTimeMillis();
    
    
    		BackupGUI.progress.setIndeterminate(true);
    		countFiles(root);
    		BackupGUI.setSongCounter(totalFileAmount);
    		BackupGUI.progress.setIndeterminate(false);
    		x = ((float) totalFileAmount / (float) 100);
    		BackupGUI.progress.setValue(0);
    		start(root);
    
    
    		BackupGUI.fileProgress.setValue(0);
    		BackupGUI.progress.setValue(0);
    		BackupGUI.appendTextArea("Alle Daten wurden gesichert");
    
    
    		BackupGUI.appendTextArea("Benötigte Zeit: "
    				+ ((double) System.currentTimeMillis() - (double) start)
    				/ 1000d + " Sekunden");
    		BackupGUI.appendTextArea("Benötigter Speicherplatz: "
    				+ (speicherplatz / 1000000) + " Mb (" + speicherplatz
    				+ " Bytes)");
    	}
    }
    Alles anzeigen
  • ZID-WinXP auf Mac?

    • beat
    • 13. Dezember 2007 um 03:01

    hatte das Problem auch. lad dir ein image von freedos. partitionier mit Bootcamp. starte neu mit freedos. Gib ein Format c:/ starte neu mit xp. jetzt sollte alles funktionieren.

  • WinXP auf macbook checkt die RAM nicht

    • beat
    • 5. Dezember 2007 um 09:23

    ich glaub dir natürlich.

  • WinXP auf macbook checkt die RAM nicht

    • beat
    • 4. Dezember 2007 um 23:55

    hmmm, die graka nimmt sich maximal 0,25gig. es unter os x aber alles in Ordnung ist find ich das ganze schon sehr strange.

  • WinXP auf macbook checkt die RAM nicht

    • beat
    • 4. Dezember 2007 um 23:04

    normalerweise sollte man mit 32 Bit ja 2^32 Bit Ram ansprechen können,wieso kann das xp nicht. os x is ja auch nur 32 bit

  • WinXP auf macbook checkt die RAM nicht

    • beat
    • 4. Dezember 2007 um 21:22

    Hallo

    Hab in mein macbook 4GB Ram reingepackt, unter os x werden die auch erkannt, winXP (tu wien studenten verison) checkt allerdings nut 2,97GB??? ist das normal?

  • Alternative zu Parallels

    • beat
    • 29. November 2007 um 20:04

    problem gelöst. Boot.ini

  • Alternative zu Parallels

    • beat
    • 29. November 2007 um 18:35

    hab mir jetzt vmware besorgt, es is hammergeil, nur habe ich ein kleines problem. Beim ersten starten der vm sehe ich dass es beim boot loader von windows 3 möglichkeiten zur auswahl gibt.

    Parallels irgendwas...
    Windows XP
    Unerkanntes betriebsystem

    er startet von haus aus immer 1 und dann kommt der seltsame fehler mit der nicht gefundenen hal.dll. Beim 2. start kann ich dann winxp auswählen und alles geht prächtig. Wie kann ich den bootloader von windows umschreiben bzw in welcher datei stecken die daten, bzw sind sie überhaupt human readable?

  • Bootzeit macbook

    • beat
    • 27. November 2007 um 22:32

    Wie lange braucht euer macbook unter leopard zum booten, damit meine ich die zeit vom einschalten bis zum login screen?

  • Alternative zu Parallels

    • beat
    • 27. November 2007 um 22:27

    Hallo

    Welche alternativen zu parallels gibt es, hab damit nämlich nur probleme

    mfg

  • Tastaturaussetzer in Leopard

    • beat
    • 27. November 2007 um 01:32

    mal sehen was nächste woche der apple service dazu sagt... werd dann berichten

  • Tastaturaussetzer in Leopard

    • beat
    • 27. November 2007 um 01:28

    das war ein anderes Gerät. tippe auf Hardwarefehler

  • Tastaturaussetzer in Leopard

    • beat
    • 25. November 2007 um 23:40
    Zitat von Wolfman

    bist eh no innerhalb der 14 tage?

    Was heisst innerhalb der 14 Tage, hab 1 Jahr Garantie...
    Hab übrigends ein Macbook, kein Pro

    mfg

  • Tastaturaussetzer in Leopard

    • beat
    • 25. November 2007 um 21:45

    gut, werd das auch nächste woche machen

  • Bootcamp in Leopard

    • beat
    • 25. November 2007 um 21:09

    den auswahlbildschirm bekommst du wenn du mit gedrückter alt taste bootest

  • Tastaturaussetzer in Leopard

    • beat
    • 25. November 2007 um 14:42

    die interne, MacBook 2,2ghz osx 10.5.1

  • Tastaturaussetzer in Leopard

    • beat
    • 24. November 2007 um 23:59

    Hat wer ein ähnliches problem (tastaturaussetzer für ca. 2 minuten, danach geht alles wieder bis nach einiger zeit der nächste auftritt)

  • Lösungsvorschlag

    • beat
    • 22. November 2007 um 02:21

    es gibt in Java Klassen die dir Methoden zur Berechnung von Large Primas anbieten, glaube zb die Klasse BigInteher

  • einfaches skript zum kopieren

    • beat
    • 21. November 2007 um 19:58

    vielen dank paul. Als was muss ich das file dann speichern bzw was ist die analoge dateiendung zum *.bat, *.sh?

    meinst du die manpage vom sh oder vom bash

    mfg

Rechtliches

Impressum

Datenschutzerklärung