T
Bitte versuche mal, wie schon erwähnt, die Arbeit deines Programms zu erhöhen
und ermittle den durchschnittlichen 'VM Size' Anstieg z.B. pro Loop.
ich kann das leider nicht mehr erhöhen als jede sekunde eine abfrage.., momentan bei 10sec.. sollte aber eigentl reichen...
Intressant ist zudem ob du Handle Leaks oder andere Leaks (Threads, files, ...) hast.
Hierzu kannst du den Taskmanager oder besser den ProcessExplorer verwenden.
ich weiß nicht ob ich das richtig gemacht hab... bin auf "File / Handle " gegangen und habe dort nach "malloc, new, etc. gesucht.."
gefunden habe ich nichts... ich weiß auch das ich in meinem code kein malloc, new etc verwende
Oft ist es hilfreich eigene Object Memory Zähler einzubauen.
Man kann dann zu bestimmten Zeitpunkten loggen welche Objekte existieren.
versteh ich nicht ganz.. da ehlen mir wohl auch die grundlagen.. zumindest würde ich sagen, ich nutze kein objekte. nur variablen und zeiger...
ich glaube ich weiß warum der speicher ansteigt.. und zwar wegen den 5 connect versuchen bzw dem verbindungsaufbau...
5 deshalb weil es sein kann das ein serer zwar erreichbar aber überlastet ist..
oder? kann es daran liegen??
wenn ja, dann benutze non-blocking threads.. richtig?
mit non-blocking kann ich ja sagen. prüfe nach 15sec prüfe nach 30sec usw. richtig?
oder kann ich nicht einfach den speicher der beim verbindungsaufbau verbraucht wieder zurücksetzen? das muss doch auch gehen? non-blocking threads sind mir zu kompliziert und eigentlich unnötig... ist nämlich egal ob das programm blockiert wird oder nicht...
//error handling der übersicht rausgemacht...
//Winsock starten
int connect_handle;
SOCKET new_socket;
SOCKADDR_IN addr;
WSADATA wsa;
connect_handle = WSAStartup(MAKEWORD(2,0),&wsa);
//Socket definieren
new_socket = socket(AF_INET,SOCK_STREAM,0);
//addr auf null setzen
memset(&addr, 0, sizeof(SOCKADDR_IN));
//und wieder füllen
addr.sin_family = AF_INET;
addr.sin_port = htons(80);
addr.sin_addr.s_addr = inet_addr(serverip.c_str());
//Verbindung aufbauen
bool connect_success = false;
connect_handle = connect(new_socket, (SOCKADDR*)&addr, sizeof(SOCKADDR));
// TRY IT 5 TIMES ( MAYBE THERE'S A SLOW SERVERS... )
//************************************************
// 1. Connect Versuch
if(connect_handle == SOCKET_ERROR) {
//TRY IT AGAIN
connect_handle = connect(new_socket, (SOCKADDR*)&addr, sizeof(SOCKADDR));
//************************************************
// 2. Connect Versuch
if(connect_handle == SOCKET_ERROR) {
//TRY IT AGAIN
connect_handle = connect(new_socket, (SOCKADDR*)&addr, sizeof(SOCKADDR));
//************************************************
// 3. Connect Versuch
if(connect_handle == SOCKET_ERROR) {
//TRY IT AGAIN
connect_handle = connect(new_socket, (SOCKADDR*)&addr, sizeof(SOCKADDR));
//************************************************
// 4. Connect Versuch
if(connect_handle == SOCKET_ERROR) {
//TRY IT AGAIN
connect_handle = connect(new_socket, (SOCKADDR*)&addr, sizeof(SOCKADDR));
//************************************************
// 5. Connect Versuch
if(connect_handle == SOCKET_ERROR) {
closesocket(new_socket);
WSACleanup();
} else {
connect_success = true;
}
} else {
connect_success = true;
}
} else {
connect_success = true;
}
} else {
connect_success = true;
}
} else {
connect_success = true;
}