HTTP Server Memory Leak?

Status
Nicht offen für weitere Antworten.

Roland34

Mitglied
Hallo,
Ich habe fogende Code mit Hilfe von java Doku implementiert. Aber ich sehe den Speicherverbrauch mit der Zeit immer erhöht wirrd. Hat jemand mit so was Erfahrung. Oder war da ein Bug in VM. Ich wevwende jdk1.6.0_06
Für jede Hilfe, Idee bin ich dankbar.

Code:
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;

import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;

class Server implements HttpHandler
{
  public void handle( HttpExchange httpExchange ) throws IOException
  {
    httpExchange.getResponseHeaders().add( "Content-type", "text/html" );
    String response = "test ";
    httpExchange.sendResponseHeaders( 200, response.length() );

    OutputStream os = httpExchange.getResponseBody();
    os.write( response.getBytes() );
    os.close(); //
  }
  public static void main(String[] args) {
     HttpServer server = null;
     try {
      server = HttpServer.create( new InetSocketAddress( 80 ), 0 );
     } catch(IOException e) {
       
     }
       server.createContext( "/", new Server() );
       server.start();

}
}
 

Lim_Dul

Top Contributor
Größer tut ja erstmal nicht weh. Nur weil ein Object (z.b. der Outputstream) nicht mehr benötigt wird, wird der Speicher nicht sofort freigegeben. Das macht die VM irgendwann, wenn es ihr passt.

Du könntest mal den Speicher für das Programm massiv runterdrehen, so dass es nur knapp über dem ist, was benötigt wird. Wenn es dann nach einiger Zeit mit einem OutOfMemoryError abbricht, ist wirklich eins vorhanden.

Ich gehe aber stark davon aus, dass das kein Speicherleck vorliegt, sondern die VM einfach "zu faul" ist, den Speicher freizugeben, da ja noch genügend da ist.
 
T

tuxedo

Gast
Ein Profiler kann dir weitere Details liefern ...

>> Aber ich sehe den Speicherverbrauch mit der Zeit immer erhöht wirrd.

Nenn mal ein paar Zahlen... Um wieviel MB wächst das ganze in welchem Zeitraum? "Überlebt" die Anwendung mehrere Tage Dauertest?

- Alex
 

Roland34

Mitglied
Ich habe den Server laufen lassen und einfach mit firefox aktualisiert. Dann wächst den Speicher . Ich habe es mit task manager in winxp beobachtet.

Kurz zu mein allgemeines Problem:

Mein Problem ist, dass meine Anwendung zu oft Zugreiffe auf den Web server macht. Es kommt nach eine weile zu OutOfMemoryError.
 

HoaX

Top Contributor
probiers halt mal mit nem "richtigen" httpserver wie tomcat oder jetty, zumindest letzterer lässt sich genauso leicht integrieren wie das komische teil von sun (wieso benutzen viele das überhaupt?)
 

Roland34

Mitglied
Ich habe ein Heapdump auch gemacht.

sun.net.httpserver.ServerImpl als verdächtig aus. Was kann das sein?

Ich vermute, der connection wird nicht zu gemacht. Weiß jemand einfach das zuzumachen?
In Doku finde ich so was nicht.

Danke für jede Hilfe!


sun.net.httpserver.ServerImpl @ 0x25b1a4c8
java.util.Collections$SynchronizedSet @ 0x25b20648
java.util.HashSet @ 0x25b408f0
java.util.HashMap @ 0x25b487c8
java.util.HashMap$Entry[2048] @ 0x2685cc00
java.util.HashMap$Entry @ 0x25f9e430
java.util.HashMap$Entry @ 0x26944478
java.util.HashMap$Entry @ 0x26907aa0
java.util.HashMap$Entry @ 0x25987fb0
java.util.HashMap$Entry @ 0x25f3d5d0
java.util.HashMap$Entry @ 0x2647b528
java.util.HashMap$Entry @ 0x25971470
java.util.HashMap$Entry @ 0x25cdf598
java.util.HashMap$Entry @ 0x263837e0
java.util.HashMap$Entry @ 0x2642b188
java.util.HashMap$Entry @ 0x2691d050
java.util.HashMap$Entry @ 0x25980de0
java.util.HashMap$Entry @ 0x25a2ccc0
java.util.HashMap$Entry @ 0x25a63a70
java.util.HashMap$Entry @ 0x26109460
java.util.HashMap$Entry @ 0x263ef660
java.util.HashMap$Entry @ 0x263ef738
java.util.HashMap$Entry @ 0x265d8940
java.util.HashMap$Entry @ 0x25a92668
java.util.HashMap$Entry @ 0x25fd41e8
java.util.HashMap$Entry @ 0x25a94b58
java.util.HashMap$Entry @ 0x25f16a10
java.util.HashMap$Entry @ 0x2604e068
java.util.HashMap$Entry @ 0x260d20f0
java.util.HashMap$Entry @ 0x26109418
 
T

tuxedo

Gast
Schau doch in den Sourcecode .. Da scheint eine HashMap nicht abgeräumt zu werden. Oder du hast irgend einen Call vergessen der die HashMap aufräumt.

- Alex
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F http Post auf einen Grafana Server Netzwerkprogrammierung 3
S HTTP Post?!? - Java Server Netzwerkprogrammierung 7
P HTTP Bild von einem Server per http kopieren Netzwerkprogrammierung 1
U HTTP XML vom Server abholen oder http Abfragen, Entscheidung treffen Netzwerkprogrammierung 0
P HTTP Server / Client Netzwerkprogrammierung 1
M Server mit HTTP Netzwerkprogrammierung 9
D Server Client Verbindung - Unexpected End of File - Invalid HTTP Response Netzwerkprogrammierung 4
T HTTP Einen HTTP Server erstellen Netzwerkprogrammierung 20
A HTTP Zugriff auf http-Server - Error 400 Netzwerkprogrammierung 11
E Socket HTTP-Server Netzwerkprogrammierung 6
C HTTP Studienarbeit Kommunikation via HTTP mit POST zwischen Server und Client Netzwerkprogrammierung 7
Kr0e Simpler HTTP Stream server Test Netzwerkprogrammierung 3
K HTTP-Anfrage an einen Server wird nicht beantwortet Netzwerkprogrammierung 3
N Dateigröße einer Datei auf einem HTTP-/Web-Server. Netzwerkprogrammierung 9
P File von http-Server kopieren Netzwerkprogrammierung 5
G unvollständige Daten: Http Client-Server-Kommunikation Netzwerkprogrammierung 2
S http Server selber schreiben Netzwerkprogrammierung 5
A http request per socket an apache server Netzwerkprogrammierung 5
S Dateien auf einem HTTP Server Netzwerkprogrammierung 2
S MySQL, PHP, Perl Support in einem Java HTTP Server? Netzwerkprogrammierung 7
H Datei mit Anhang via http "hochladen" Netzwerkprogrammierung 16
R Anfängerbeispiel: Suche Java-Anwendung die http-Anfragen in Tomcat liest Netzwerkprogrammierung 8
O HTTP Wer hilft mit meinem UTF-8 http Request ? Netzwerkprogrammierung 1
G localhost im Backend https vs. http Netzwerkprogrammierung 9
J Simple HTTP Framework (basierend auf expressjs) Netzwerkprogrammierung 1
M HTTP Http requests aufzeichnen Netzwerkprogrammierung 2
J HTTP [Java 9] Neuer HTTP Client - Tutorial Netzwerkprogrammierung 3
J HTTP Befehl via HTTP senden ohne Browser öffnen Netzwerkprogrammierung 3
F HTTP HTTP Rest Client mit TLS1.2 und selbst signiertem Zertifikat Netzwerkprogrammierung 2
M http request and response Netzwerkprogrammierung 0
M Verbindungszeit berechnen (TCP, HTTP/1.0, HTTP/1.1) Netzwerkprogrammierung 2
S HTTP-Requeste von Browser mit Java sniffen? Netzwerkprogrammierung 9
E HTTP java.lang.IllegalArgumentException: protocol = http host = null Netzwerkprogrammierung 1
H Sockets oder HTTP- Methoden? Netzwerkprogrammierung 3
B Socket HTTP-Request führt zu Endlosschleife Netzwerkprogrammierung 5
D HTTP nochne frage zu http requests Netzwerkprogrammierung 6
D HTTP Bräuchte hilfe mit Http Requests Netzwerkprogrammierung 6
K HTTP Eigener Http Response für Datei-Download Netzwerkprogrammierung 4
F HTTP HTTP-Download: Dateien in einem Verzeichnis ermitteln Netzwerkprogrammierung 8
N Problem über http eine Datei zu senden Netzwerkprogrammierung 4
Dit_ HTTP Einfache HTTP-Anfrage Netzwerkprogrammierung 6
nrg FileUpload HTTP POST Netzwerkprogrammierung 5
T Socket Java HTTP-Proxy Netzwerkprogrammierung 3
B HTTP JSESSIONID in Http(s)URLConnection loswerden! Netzwerkprogrammierung 13
C HTTP POST Connect Netzwerkprogrammierung 9
D HTTP Java HTTP Kommunikation Netzwerkprogrammierung 9
R HTTP Apache HTTP Client: Request mit angehängter Datei Netzwerkprogrammierung 2
O Http request Netzwerkprogrammierung 7
Tobse HTTP ServerSocket HTTP Netzwerkprogrammierung 4
I HTTP Datei Uploaden mit http und Sprache anpassen Netzwerkprogrammierung 7
I Socket HTTP Nachrichten über Sockets verschicken Netzwerkprogrammierung 2
N Http Client Netzwerkprogrammierung 3
W Asynchroner HTTP Client / non-blocking I/O Netzwerkprogrammierung 2
R HTTP Problem bei Authentifizierung über (Http)UrlConnection Netzwerkprogrammierung 2
L Body eines http Request auslesen Netzwerkprogrammierung 2
T HTTP Encoding von Http-Streams Netzwerkprogrammierung 2
K Ende eines HTTP Response/Request Netzwerkprogrammierung 6
D http request Netzwerkprogrammierung 11
J org.apache.http.auth.NTCredentials Netzwerkprogrammierung 2
W Problem mit HTTP-Dateiübertragung Netzwerkprogrammierung 6
A org.apache.commons http client in Netbeans einbinden Netzwerkprogrammierung 3
G Http Client mit Redirect Enabled Netzwerkprogrammierung 2
M Http POST liefert kryptischen Content Netzwerkprogrammierung 4
G Sockets und HTTP: Ende des Datenempfangs erkennen Netzwerkprogrammierung 3
B Wie HTTP GET/POST Anfrage versenden? Netzwerkprogrammierung 7
G HTTP-Request InputStream-Problem Netzwerkprogrammierung 5
K optimale HTTP Downloads Netzwerkprogrammierung 15
G auf http-request antworten. Netzwerkprogrammierung 3
I http sniffer gesucht Netzwerkprogrammierung 10
G Socket + HTTP Header Netzwerkprogrammierung 2
R HTTP ServerThread Netzwerkprogrammierung 4
J HTTP GET? Netzwerkprogrammierung 6
C FTP vs HTTP Netzwerkprogrammierung 10
M HTTP-Response extrem fragmentiert Netzwerkprogrammierung 4
W HTTP-Upload Netzwerkprogrammierung 2
M HTTP response code: 401 ; ?aber im browser ist es abrufbar? Netzwerkprogrammierung 5
L Java HTTP Request Netzwerkprogrammierung 3
O Axis2 erstellt HTTP/1.1 anstatt HTTP/1.0 Netzwerkprogrammierung 3
B Fehler 401 bei http GET Netzwerkprogrammierung 2
S HTTP Request erstellen Netzwerkprogrammierung 2
E upload progress bei einem http file post Netzwerkprogrammierung 5
B lange Strings in http-Request? Netzwerkprogrammierung 3
K http-download Netzwerkprogrammierung 12
M erst POST dann Http-Request über URLConnection Netzwerkprogrammierung 3
I Apache http-client: Problem beim Proxyaufruf Netzwerkprogrammierung 2
m@nu Ende von Stream bei HTTP-Request Netzwerkprogrammierung 3
M RMI over HTTP Netzwerkprogrammierung 5
M HTTP Requests verarbeiten und Response senden mit Java Netzwerkprogrammierung 14
G HTTP Response mit Transfer-Encoding:chunked einlesen Netzwerkprogrammierung 4
D HTTP Request erstellen (Form Name übergeben!) Netzwerkprogrammierung 3
J Java Programm für Upload von Dateien per HTTP Netzwerkprogrammierung 7
L http kommunikation mit und ohne multipart Netzwerkprogrammierung 4
L file upload / download über http Netzwerkprogrammierung 5
G HTTP Client :: Komme nicht über den Proxy Netzwerkprogrammierung 7
P Easy Http Request Netzwerkprogrammierung 9
B non US-ASCII Dateinamen über HTTP? Netzwerkprogrammierung 2
G http 1.1 socket? Netzwerkprogrammierung 3
J HTTP-POST-Request mit Anhang über Socket Netzwerkprogrammierung 2
S Suche API für einfachen HTTP-Zugriff. Netzwerkprogrammierung 17
Z HTTP Request Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben