AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Unabhängigen Prozess starten

Offene Frage von "seppitm"
Ein Thema von seppitm · begonnen am 26. Mai 2014 · letzter Beitrag vom 27. Mai 2014
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: Unabhängigen Prozess starten

  Alt 26. Mai 2014, 16:00
Hallo,
wenn ich 10 Childprozesse erstelle ist der Speicher für meine Anwendung irgendwann voll. Deshalb möchte ich gerne Prozesse unabhängig von meiner Anwendung Starten (als hätte der Benutzer sie gestartet).
Wie schon gesagt wurde: Jeder Prozess (egal ob Child-Prozess oder nicht) erhält seinen eigenen virtuellen Speicher und kein anderer Prozess hat normalerweise auf den Speicher dieses Prozesses Zugriff.

Wenn du mehrere dieser Prozesse startest und der Arbeitsspeicher ist irgendwann voll, dann liegt das daran dass der Pc einfach nicht genug Arbeitsspeicher hat um alle deine Prozesse zu versorgen.

(Angenommen du hast 4GB RAM und 4 Prozesse die jeweils 1GB verbrauchen -> Arbeitsspeicher voll)
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.981 Beiträge
 
Delphi 12 Athens
 
#2

AW: Unabhängigen Prozess starten

  Alt 26. Mai 2014, 16:12
Für mich hört sich das so an als würde da ein Aufruf z.B. einer PHP-Seite passieren und darin dann der Prozess gestartet werden, der dann wieder weitere Prozesse startet, richtig?
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
seppitm

Registriert seit: 10. Nov 2010
14 Beiträge
 
#3

AW: Unabhängigen Prozess starten

  Alt 26. Mai 2014, 20:12
Ich starte sie via CreateProcess mit Delphi. Ich habe 32 GB Ram. Wenn ich eine Java Anwendung aus Delphi heraus starte und ihr 128MB RAM zuweise ist alles okay.
Wenn ich Java allerdings 2048MB zuweise, stürzt der Parent (also mein Delphi Programm) ab. Es passiert genau das gleiche wenn ich mehrere Server starte, die irgendwann zu viel RAM nutzen.

In einem Forum habe ich gelesen das die initiale Stack Größe erhört werden kann, den genaue Post habe ich nicht mehr aber das hier ist ähnlich, genau so habe ich es dann auch gemacht:

http://www.delphipraxis.net/148797-m...cht-nicht.html

Das hat auch funktioniert, doch es gibt auch dort ein Limit (was ich schon öfters überschritten habe, was dazu führt das alle Gameserver aus sind). Deshalb möchte ich gerne keinen sub Prozess von mir sondern einen vom System aus Starten. so wie hier zum Beispiel (c++):

http://stackoverflow.com/questions/5...endent-process
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#4

AW: Unabhängigen Prozess starten

  Alt 26. Mai 2014, 21:17
Ich starte sie via CreateProcess mit Delphi.
Hast du dazu mal etwas Code?

Zitat:
Ich habe 32 GB Ram.
Die überhaupt nicht relevant sind. Ich nehme mal an, dass dein Delphi-Programm 32 Bit ist. Dann beschränkt sich dein Adressraum auf 2 GiB.

Zitat:
Wenn ich eine Java Anwendung aus Delphi heraus starte und ihr 128MB RAM zuweise ist alles okay.
Wieso wird die wichtige Info, dass es um Java geht, jetzt erst erwähnt? Die JVM hat teilweise ihr eigenes Verhalten. Auf welche Weise (mit welchem Parameter) weist du denn der JVM den Speicher zu? Um welche Java-Software geht's denn? (Mal wieder Minecraft?)

Zitat:
Wenn ich Java allerdings 2048MB zuweise, stürzt der Parent (also mein Delphi Programm) ab.
Wie genau passiert das? Einfach so sang- und klanglos? Oder gibt's ne Meldung (von Dr. Watson bzw. der Fehlerberichterstattung)? Wenn ja, wie lautet diese?

MfG Dalai
  Mit Zitat antworten Zitat
seppitm

Registriert seit: 10. Nov 2010
14 Beiträge
 
#5

AW: Unabhängigen Prozess starten

  Alt 26. Mai 2014, 21:34
Habe den befehl nicht mehr habe es in der aktuellen Version mit der ShellAPI gemacht.

Es handelt sich um eine 64Bit Anwendung, ich bin ja nicht dumm...

Es handelt sich um das spiel um Minecraft richtig, was sollte sonst so viel verbrauchen.
Code:
java -Xmx3072M -Xms1024M -XX:MaxPermSize=1024m -Duser.dir="C:\Users\USERNAME\AppData\Roaming\MCPACK\v4" -Dfml.ignorePatchDiscrepancies=true -Djava.library.path="C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\enhaNatives" -cp "C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\argo\argo\2.25_fixed\argo-2.25_fixed.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\com\google\code\gson\gson\2.2.2\gson-2.2.2.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\com\google\guava\guava\14.0\guava-14.0.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\com\paulscode\codecjorbis\20101023\codecjorbis-20101023.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\com\paulscode\codecwav\20101023\codecwav-20101023.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\com\paulscode\libraryjavasound\20101123\libraryjavasound-20101123.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\com\paulscode\librarylwjglopenal\20100824\librarylwjglopenal-20100824.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\com\paulscode\soundsystem\20120107\soundsystem-20120107.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\commons-io\commons-io\2.4\commons-io-2.4.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\lzma\lzma\0.0.1\lzma-0.0.1.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\net\java\jinput\jinput\2.0.5\jinput-2.0.5.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\net\java\jinput\jinput-platform\2.0.5\jinput-platform-2.0.5-natives-windows.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\net\java\jutils\jutils\1.0.0\jutils-1.0.0.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\net\minecraft\launchwrapper\1.3\launchwrapper-1.3.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\net\minecraftforge\minecraftforge\9.10.0.845\minecraftforge-9.10.0.845.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\net\minecraftforge\minecraftforge\9.10.1.871\minecraftforge-9.10.1.871.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\net\optifine\optifine\1.6.2_HD_C4\optifine-1.6.2_HD_C4.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\net\sf\jopt-simple\jopt-simple\4.5\jopt-simple-4.5.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\org\apache\commons\commons-lang3\3.1\commons-lang3-3.1.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\org\bouncycastle\bcprov-jdk15on\1.47\bcprov-jdk15on-1.47.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\org\lwjgl\lwjgl\lwjgl\2.9.0\lwjgl-2.9.0.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\org\lwjgl\lwjgl\lwjgl-platform\2.9.0\lwjgl-platform-2.9.0-natives-windows.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\org\lwjgl\lwjgl\lwjgl_util\2.9.0\lwjgl_util-2.9.0.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\org\ow2\asm\asm-all\4.1\asm-all-4.1.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\org\scala-lang\scala-compiler\2.10.2\scala-compiler-2.10.2.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\org\scala-lang\scala-library\2.10.2\scala-library-2.10.2.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\versions\1.6.2-Forge9.10.1.871\1.6.2-Forge9.10.1.871.jar" net.minecraft.launchwrapper.Launch --username USER --session token:1337:1337 --version 1.6.2-Forge9.10.1.871 --gameDir "C:\Users\USERNAME\AppData\Roaming\MCPACK\v4" --assetsDir "C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\assets" --tweakClass cpw.mods.fml.common.launcher.FMLTweaker -Dfml.ignorePatchDiscrepancies=true --server 1313131231232 --port 1337
Das baut mein Tool halt dynamisch zusammen.

Es stürzt einfach ohne Meldung ab, manchmal kommt schon eine aber bekomme die grade nicht reproduziert, es ist allerdings nicht so wenn ich den obigen Befehl in die CMD packe und das so ausführe...

Geändert von seppitm (26. Mai 2014 um 21:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#6

AW: Unabhängigen Prozess starten

  Alt 26. Mai 2014, 22:36
Habe den befehl nicht mehr habe es in der aktuellen Version mit der ShellAPI gemacht.
Der wäre aber wichtig.

Zitat:
Es handelt sich um das spiel um Minecraft richtig, was sollte sonst so viel verbrauchen.
Na Java ist doch ein bekannter Speicherfresser . Ne, im Ernst, ich hab keine Ahnung von Spieleservern und was da viel verbraucht und was nicht.
Zitat:
Code:
java -Xmx3072M -Xms1024M [...]
So, du gibst der JVM also minimal 1 GiB und maximal 3 GiB Speicher. Ist es denn ein 64 Bit Java?

Zitat:
Es stürzt einfach ohne Meldung ab [..]
Schau mal in die Ereignisanzeige, ob dort zum Absturzzeitpunkt etwas zu finden ist. Schreibt das Minecraft vielleicht noch irgendwelche Logs (oder kann man ihn bzw. die JVM dazu veranlassen)?

MfG Dalai
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.813 Beiträge
 
Delphi 12 Athens
 
#7

AW: Unabhängigen Prozess starten

  Alt 27. Mai 2014, 08:17
So, du gibst der JVM also minimal 1 GiB und maximal 3 GiB Speicher. Ist es denn ein 64 Bit Java?
Ist Java nicht maschinenunabhängig?

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

AW: Unabhängigen Prozess starten

  Alt 26. Mai 2014, 21:39
(Angenommen du hast 4GB RAM und 4 Prozesse die jeweils 1GB verbrauchen -> Arbeitsspeicher voll)
Was ist denn das für ein Unsinn? Mit 8 GB könnten alsur 8 Prozesse laufen? Guck mal in deinen Taskmanager wie viel Prozesse da schon nach dem Start laufen. Dienste sind auch Prozesse. Das Stichwort ist hier virtueller Adressraum und was alles dazu gehört.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: Unabhängigen Prozess starten

  Alt 27. Mai 2014, 08:45
(Angenommen du hast 4GB RAM und 4 Prozesse die jeweils 1GB verbrauchen -> Arbeitsspeicher voll)
Was ist denn das für ein Unsinn? Mit 8 GB könnten alsur 8 Prozesse laufen? Guck mal in deinen Taskmanager wie viel Prozesse da schon nach dem Start laufen. Dienste sind auch Prozesse. Das Stichwort ist hier virtueller Adressraum und was alles dazu gehört.
Naja wenn jeder der 4 Prozesse tatsächlich 1GB Speicher verbraucht dann ist der physikalische Arbeitsspeicher voll. Natürlich hat jeder (32-Bit)Prozess seinen vollen (theoretischen) 4GB virtuellen Adressraum, aber das vergrößert nicht den Arbeitsspeicher. Klar, es gibt die Auslagerungsdatei aber wenn der physikalische Arbeitsspeicher erst mal voll ist, ist der Nutzen der Auslagerungsdatei auch sehr begrenzt bzw. das ganze wird ggf. sehr langsam..
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz