Zum Inhalt springen

geloescht_Newlukai

Mitglieder
  • Gesamte Inhalte

    451
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von geloescht_Newlukai

  1. Für alle Interessierten: Es ist tatsächlich so, daß der SPeicher nicht wieder freigegeben wird, weder automatisch noch durch eine evtl. manuelle Ansteuerung. Allerdings gilt das nur für die von Sun implementierte JVM. Bei anderen Implementierungen kann es durchaus anders sein.
  2. Ich verwende das JDK 5. Zu den Zeitabständen: Die paar Zeilen sind der komplette Code. Führe ich das Programm aus und sind die Integer generiert, lasse ich dem System 10 Sekunden Zeit, um sehen zu können, wie groß der Speicherverbrauch ist. Danach entferne ich mit dem Null-Setzen jegliche Referenz auf die Integer die ich habe. Zugegeben, die Referenz auf die Liste wird entfernt, die Integer sind noch über die Liste referenziert. Allerdings sollte die JVM bzw. der GC ja merken, daß somit auch die Referenzen auf die Integer unnötig sind. Jedenfalls hat das System danach 20 Sekunden Zeit, etwas zu tun. Meiner Meinung nach ist das mehr als genug Zeit. Und nach dem Erstellen bleiben die 33MB reserviert. Und anschließend starte ich den GC eben manuell mit nochmals 20 Sekunden Verschnaufpause. Sind die rum, wird das Programm beendet und der Prozess terminiert, ergo kein Speicherverbrauch mehr.
  3. Sicher? Ich konnte nicht umhin und habe es getestet. Dazu habe ich folgende Zeilen geschrieben: List<Integer> ints = new ArrayList<Integer>(10000); for(int i = 0; i < 1000000; i++) { ints.add(new Integer(i)); } try { System.out.println("done ... waiting"); Thread.sleep(10000); ints = null; System.out.println("set to null ... waiting 20s"); Thread.sleep(20000); System.gc(); System.out.println("started GC ... waiting 20s"); Thread.sleep(20000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); }[/PHP] Ich bin sicher ich habe einen Denkfehler oder so drin Jedenfalls habe ich das Programm aus der eclipse gestartet und mit dem Task-Manager den Speicherverbrauch des neuen Prozesses überwacht. Nachdem die Integer erstellt wurden, bleiben - auch nach dem Null-Setzen - die ca. 33MB belegt.
  4. Mahlzeit, ich hätt' da mal ein Problem. Angenommen, ich erstelle einen großen Haufen an Objekten und Java bzw. die VM läßt sich vom System entsprechenden Speicher zuweisen. Soweit alles klar. Wenn ich nun aber keine Referenzen mehr auf die Objekte habe, löscht sie die Garbage Collection irgendwann. Auch klar. Nun mein Problem: Dieser freigewordene Speicher, bleibt der Java zugewiesen oder wird er dem System wieder zurückgegeben? Oder kann man das manuell bewerkstelligen? Gruß Newlukai
  5. Das sind keine Java-Fachbegriffe. Das sind alles Begriffe (bis auf vll. Referenz) der opbjekt-orientierten Programmierung. Ich gehe davon aus, daß Du irgendeinen Informatikkurs begonnen hast, der mit Java arbeitet und mit diesen Begriffen das erste Mal konforntiert wurdest. Für solch einen Fall empfehle ich Dir doch sehr Java ist auch eine Insel und für einen tieferen Einstieg in die OOP das Praxisbuch Objektorientierung.
  6. Das sieht ja schon mal gut aus. Jetzt mußt Du nur noch jede sLine, die zwischen den p-Tags hängt per sbText.append(sLine) and den StringBuffer anhängen. Der StringBuffer darf dabei natürlich nur einmal und nicht jedesmal initialisiert werden Du mußt also herausfinden, ob die aktuelle gelesene sLine zwischen p-Tags liegt oder nicht und je nachdem dem StringBuffer hinzufügen. Probier' mal rum, falls Du hängst, melde Dich wieder. Hab' auch mehr aus Neugierde gefragt, als Dich belehren zu wollen
  7. Kein Wunder, wenn man nichts dafür tut, daß wer Text gesichert/ausgegeben wird. Aber gut: Du bist Dir im Klaren darüber, daß Du einen Text über mehrere Zeilen liest und daher immer wieder 'ne neue sLine hast? Du mußt also den Text von "<p>" bis zum Ende der Zeile sichern, dann alle weitere Zeilen dranhängen bis Du eine Zeile findest, in der "</p>" steht. Empfehlen würde ich da einen StringBuffer. Über append() kannst Du an den immer wieder einen String anhängen, so daß Du später den kompletten Text innerhalb der p-Tags in diesem StringBuffer hast. Das reicht vorerst mal als Tip, schließlich macht Übung den Meister. Noch was: Warum setzt Du iFirst nicht einfach auf 0 statt auf 0xffff?
  8. Bringt relativ wenig mit einem Pattern. Du suchst wohl eher das aus der Klasse Matcher: int start() Returns the start index of the previous match.
  9. void windowDeiconified(WindowEvent e) Invoked when a window is changed from a minimized to a normal state. void windowIconified(WindowEvent e) Invoked when a window is changed from a normal to a minimized state.
  10. Das macht Swing doch automatisch?!?
  11. geloescht_Newlukai

    E/A - Exception

    Mir fällt erst mal nur auf, daß da ein Leerzeichen zuviel ist. Und dann weiß ich nciht, ob man die URL wirklich so schreiben kann. Hast Du Dich mit einem anderen Tool mit der Datenbank verbinden können? Normalerweise würde das ja so oder so. ä. aussehen: jdbc:oracle:thin:@Server1:1610:JAVA.TEST Versuch's erst mal mit DBVisualizer oder so.
  12. Die Klasse Element erbt von Content die Methode getParent(). Ich hoffe, das ist, was Du suchst.
  13. Die DB bekommst Du also hin, das ist ja schon mal gut. Du fragst mich, wie Du das aufbauen sollst. Dazu muß ich erst mal wissen, was Du aufbauen willst und wo ich Dein Wissen erweitern kann. Das mit dem Fenster ist relativ easy: How to make Frames aus der JavaAPI.
  14. Um Dir helfen zu können, muß man erst mal wissen, wie weit Du bist. Hast Du das Datenbankschema schon entworfen? Hast Du schon etwas Code für den Client geschrieben? Zum automatischen Abmelden: Das Schließen eines Fensters kan abgefangen werden. In der aufgerufenen Methode kannst Du dann alle Schritte zum Abmelden unternehmen.
  15. Hmm. Kannst Du den betreffenden Code parsen. Vielleicht hast Du einen Fehler drin, denn das Überspringen einer Zeile, die mit "<!" beginnt, sollte funktionieren.
  16. Warum hast Du den 2-Zeiler aus dem WindowAdapter ausgelagert?
  17. geloescht_Newlukai

    JComboBox

    Hier die Meinung der JavaAPI: Aber es ist wohl machbar mit einem PopupMenuListener. Einfach per addPopupMenuListener einbinden.
  18. Klar. Hier ist es unnötig, die Exception hochzuwerfen. Aber angenommen, man wollte das tun, kann ich zumindest Dein Argument mit den Parametern, die mitgegeben werden müssen, entkräften: public boolean open() throws Exception { //... if(anzZeilen < anzSollZeilen) { throw new Exception("Zu wenige Zeilen: " + anzZeilen + " statt " + anzSollZeilen); } }[/PHP] So bleiben die Parameter bei der auftretenden Stelle und es wird eine aussagekräftige Fehlermeldung erstellt, die ohne Probleme nach oben weitergereicht werden kann. Erweitern wir Dein Beispiel um etwas mehr Funktionalität. Der Benutzer kann über die Kommandozeile mehrere Dateien angeben: [PHP]class Main { public static void main(String[] args) { String[][] fehlerhafteDateien = new String[args.length][2]; int i = 0; for(String datei : args) { Eingabe eingabe = new Eingabe(datei); try { eingabe.open(); //tu was eingabe.close(); catch (Exception e) { fehlerhafteDateien[i][0] = datei; fehlerhafteDateien[i++][1] = e.getMessage(); } } //gib die fehlerhaften Dateien mit zugehörigen Meldungen aus } } class Eingabe { public boolean open() throws Exception { //... if(anzZeilen < anzSollZeilen) { throw new Exception("Zu wenige Zeilen: " + anzZeilen + " statt " + anzSollZeilen); } } } Das Hochwerfen ist immer dann sinnvoll, wenn das Objekt, in dem der Fehler provoziert wird, ein einfach gestricktes Objekt und das delegierende Objekt einen anderen Weg zum Ziel kennt. Und solch einfach gestrickten Objekte gibt es einige, wenn man Design Patterns und/oder Refactoring nutzt.
  19. Jetzt mal immer langsam. Auch ein Smiley macht die Aussage nicht besser. Aber zurück zum Thema: Du bist also der Meinung, daß das Weiterreichen von Fehlern absolut unnötig und nie sinnvoll zu gebrauchen sei. Hier sind schon ein paar Gedanken dazu geäußert worden. Vielleicht ist es jetzt mal an der Zeit, daß Du Deine Aussage argumentierst? Verrate uns, warum es unsinnig sei, Exceptions an einer anderen Stelle zu behandeln. Ich bin anderen Meinungen immer aufgeschlossen und wer weiß, vielleicht kannst Du mich ja überzeugen? Ah ja. Was bist Du denn? Welch hohen akademischen Rang hast Du erlangt?
  20. Ich hätte da was. Stell' Dir ein Spiel vor mit Schnellspeichern. Du startest das Spiel und sagst "An letzter Stelle weitermachen". Intern versucht nun der "SaveManager" einen Speicherstand "SavePoint" zu initialisieren und übergibt ihm den Ort, wo die Datei liegt. Die Datei hast Du aber vorher aus Versehen gelöscht. Jetzt kommts im Objekt "SavePoint" zu einer FileNotFoundException. Statt jetzt den Fehler lokal zu behandeln und eine Meldung zu bringen "Letzten Speicherstand nicht gefunden" könnte man doch auch den Fehler in den "SaveManager" hoch reichen, der dann nachschaut, ob es noch weitere Spielstände gibt und den letzten laden. Zugegeben, daß Beispiel hört sich etwas herbeigezogen an, aber Situationen für sinnvolles Hochreichen von Exceptions gibt's sicherlich.
  21. Ich weiß nicht, ob Du den Unterschied zwischen Klasse und Interface kennst. Jedenfalls definiert ein Interface nur Methoden, ohne ihren Rumpf anzugeben. Und java.sql.ResultSet ist ein solches Interface. Aufgrund der Tatsache, daß ein Interface nur Methodensignaturen, aber keine Rümpfe enthält, kann man Interfaces nicht initialisieren.
  22. Darum geht's ja gar nicht. Es geht darum, daß er sein Problem nicht schildert. Und mit Problem meine ich nicht die Aufgabenstellung
  23. BufferedReader reader = null; reader = new BufferedReader(new FileReader(p_File)); String nextLine = null; try { while((nextLine = reader.readLine()) != null) { [/PHP]
  24. Ohne in Deinen ANhang zu schauen: Wie war jetzt die Frage? Will heißen, wobei kommst Du nicht weiter?
  25. Hi, auf einer LAN-Party habe ich mir blöderweise eine Speicherzelle zerschossen. Einer der Lichtschalter war mit den Steckdosen gekoppelt und seither bricht Windows jedes Programm ab, daß versucht auf diese Zelle zuzugreifen. Den RAM-Riegel habe ich schon ausgetauscht und es ging auch eine Weile gut. Irgendwann fing aber auch der neue Riegel an zu spinnen, weshalb ich vermute, daß auch das MB in Mitleidenschaft gezogen wurde. Vielleicht ist es auch nur das MB das betroffen ist, wobei ich mir aber nicht erklären kann, weshalb dann nur eine Speicherzelle den Fehler verursacht. Jedenfalls dachte ich, es gäbe vielleicht ein Programm, mit dem ich diesen Bereich des RAMs für andere Anwendungen blockieren kann. Leider sind meine Google-Suchen nicht so erfolgreich, weshalb ich hier mal nachfragen wollte. Gruß Newlukai

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...