Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Etat de l'environnement Java

30 réponses
Avatar
Rahan
Bonjour,

J'ai une application Java qui tourne sur des machines Windows XP SP2. Cette
application utilise une version de java en dure située dans un sous
répertoire du répertoire de mon application.

Cette une application financière. Elle reçois énormément du flux (TCP et
UDP) liés aux marchés financiers (bourse).

Cette application Java permet donc d'afficher à l'écran en temps réel des
informations financière. Ok

Mon problème est que lorsque il y a énormément de flux, l'application
s'arrête d'afficher les informations financière qu'elle reçoit, pourtant la
certe réseau reçoit bien et je dirai même que les packet reçu sont en bon
états.

J'ai fait énormément de tests et j'ai conclu au boulot de mes analyses que
c'est cette application Java qui à un moment donné n'est plus capable de
gérer la quantité d'info qu'elle reçois et elle bloque.

Sur ce forum, j'aimerai avoir quelques conseils et orientations coté JAVA.

Par exemple, lorsque l'application Java bloque, est ce qu'il existe des
commandes utiles dans le répertoire /Bin de java qui me permet d'avoir des
info sur l'état général de mon appli ? Est ce qu'il existe des outils qui
permette de remonter des info sur l'état de mon appli Java ? Quelles sont
les choses que je peux vérifié au niveau de Java au moment ou ça bloque...
etc

Donc encore une fois, je souhaite avoir vos conseils et vos avis pour
débuguer un peu mon appli java (l'environnement Java) histoire d'avoir des
infos utile pour être certain à 100% que mon problème est au niveau de
l'appli Java et pas ailleurs (système, réseau, tcp... etc). Coté réseau,
suite à enormement de test, j'ai exclu toute possibilité d'un problème
réseau.

Je me concentre donc sur la partie JAVA VM.

Merci infiniment

Cordialement
Rahan

10 réponses

1 2 3
Avatar
1 connue
As tu essayé de donner plus de memoire à la VM ?

ex : -Xms64M -Xmx256M

Pierre

"Rahan" a écrit dans le message de news:
44e05a6b$0$18784$
Bonjour,

J'ai une application Java qui tourne sur des machines Windows XP SP2.
Cette
application utilise une version de java en dure située dans un sous
répertoire du répertoire de mon application.

Cette une application financière. Elle reçois énormément du flux (TCP et
UDP) liés aux marchés financiers (bourse).

Cette application Java permet donc d'afficher à l'écran en temps réel des
informations financière. Ok

Mon problème est que lorsque il y a énormément de flux, l'application
s'arrête d'afficher les informations financière qu'elle reçoit, pourtant
la
certe réseau reçoit bien et je dirai même que les packet reçu sont en bon
états.

J'ai fait énormément de tests et j'ai conclu au boulot de mes analyses que
c'est cette application Java qui à un moment donné n'est plus capable de
gérer la quantité d'info qu'elle reçois et elle bloque.

Sur ce forum, j'aimerai avoir quelques conseils et orientations coté JAVA.

Par exemple, lorsque l'application Java bloque, est ce qu'il existe des
commandes utiles dans le répertoire /Bin de java qui me permet d'avoir des
info sur l'état général de mon appli ? Est ce qu'il existe des outils qui
permette de remonter des info sur l'état de mon appli Java ? Quelles sont
les choses que je peux vérifié au niveau de Java au moment ou ça bloque...
etc

Donc encore une fois, je souhaite avoir vos conseils et vos avis pour
débuguer un peu mon appli java (l'environnement Java) histoire d'avoir des
infos utile pour être certain à 100% que mon problème est au niveau de
l'appli Java et pas ailleurs (système, réseau, tcp... etc). Coté réseau,
suite à enormement de test, j'ai exclu toute possibilité d'un problème
réseau.

Je me concentre donc sur la partie JAVA VM.

Merci infiniment

Cordialement
Rahan




Avatar
Rahan
"1 connue" a écrit dans le message de
news:
As tu essayé de donner plus de memoire à la VM ?

ex : -Xms64M -Xmx256M

Pierre

"Rahan" a écrit dans le message de news:
44e05a6b$0$18784$
Bonjour,

J'ai une application Java qui tourne sur des machines Windows XP SP2.
Cette
application utilise une version de java en dure située dans un sous
répertoire du répertoire de mon application.

Cette une application financière. Elle reçois énormément du flux (TCP et
UDP) liés aux marchés financiers (bourse).

Cette application Java permet donc d'afficher à l'écran en temps réel
des


informations financière. Ok

Mon problème est que lorsque il y a énormément de flux, l'application
s'arrête d'afficher les informations financière qu'elle reçoit, pourtant
la
certe réseau reçoit bien et je dirai même que les packet reçu sont en
bon


états.

J'ai fait énormément de tests et j'ai conclu au boulot de mes analyses
que


c'est cette application Java qui à un moment donné n'est plus capable de
gérer la quantité d'info qu'elle reçois et elle bloque.

Sur ce forum, j'aimerai avoir quelques conseils et orientations coté
JAVA.



Par exemple, lorsque l'application Java bloque, est ce qu'il existe des
commandes utiles dans le répertoire /Bin de java qui me permet d'avoir
des


info sur l'état général de mon appli ? Est ce qu'il existe des outils
qui


permette de remonter des info sur l'état de mon appli Java ? Quelles
sont


les choses que je peux vérifié au niveau de Java au moment ou ça
bloque...


etc

Donc encore une fois, je souhaite avoir vos conseils et vos avis pour
débuguer un peu mon appli java (l'environnement Java) histoire d'avoir
des


infos utile pour être certain à 100% que mon problème est au niveau de
l'appli Java et pas ailleurs (système, réseau, tcp... etc). Coté réseau,
suite à enormement de test, j'ai exclu toute possibilité d'un problème
réseau.

Je me concentre donc sur la partie JAVA VM.

Merci infiniment

Cordialement
Rahan







Avec quelle commande je pourrais executer les paramètres :

-Xms64M ou -Xmx256M

Comment je pourrais connaitre la mémoire actuellement alouée à la VM ?

En général et d'après vos expériences en JAVA, qu'est ce qui se passe
lorsque la VM utilise plus de mémoire que celle allouée ?

Merci
Rahan


Avatar
Insitu
"Rahan" writes:

Avec quelle commande je pourrais executer les paramètres :

-Xms64M ou -Xmx256M

Comment je pourrais connaitre la mémoire actuellement alouée à la VM ?

En général et d'après vos expériences en JAVA, qu'est ce qui se passe
lorsque la VM utilise plus de mémoire que celle allouée ?


Une erreur OutOfMemoryError est lancée. Si l'application apparaît
bloquée, c'est peut-être parce que cette erreur est récupérée dans un
try catch lui-même imbriqué dans une boucle.

IMHO, soit:
1. l'application java est mal codée (cf. supra) et boucle
indéfiniment sans libérer de mémoire ni indiquer son état
2. il y a un bug dans la jvm.

jconsole dans le jdk 1.5 pourrait être utile.

de rien.

insitu.

Avatar
Yves T
lance déjà ton JRE en mode -server (démarrage plus long mais performance
très améliorées et meilleur gestion des threads, synchronisation...)
Avatar
Rahan
"Insitu" a écrit dans le message de
news:
"Rahan" writes:

Avec quelle commande je pourrais executer les paramètres :

-Xms64M ou -Xmx256M

Comment je pourrais connaitre la mémoire actuellement alouée à la VM ?

En général et d'après vos expériences en JAVA, qu'est ce qui se passe
lorsque la VM utilise plus de mémoire que celle allouée ?


Une erreur OutOfMemoryError est lancée. Si l'application apparaît
bloquée, c'est peut-être parce que cette erreur est récupérée dans un
try catch lui-même imbriqué dans une boucle.

IMHO, soit:
1. l'application java est mal codée (cf. supra) et boucle
indéfiniment sans libérer de mémoire ni indiquer son état
2. il y a un bug dans la jvm.

jconsole dans le jdk 1.5 pourrait être utile.

de rien.

insitu.


Merci Insitu pour votre réponse.

comment utiliser jconsole ? comment le lancer ?

Cordialement
Rahan


Avatar
Rahan
"Insitu" a écrit dans le message de
news:
"Rahan" writes:

Avec quelle commande je pourrais executer les paramètres :

-Xms64M ou -Xmx256M

Comment je pourrais connaitre la mémoire actuellement alouée à la VM ?

En général et d'après vos expériences en JAVA, qu'est ce qui se passe
lorsque la VM utilise plus de mémoire que celle allouée ?


Une erreur OutOfMemoryError est lancée. Si l'application apparaît
bloquée, c'est peut-être parce que cette erreur est récupérée dans un
try catch lui-même imbriqué dans une boucle.

IMHO, soit:
1. l'application java est mal codée (cf. supra) et boucle
indéfiniment sans libérer de mémoire ni indiquer son état
2. il y a un bug dans la jvm.

jconsole dans le jdk 1.5 pourrait être utile.

de rien.

insitu.



J'ai vérifier le script de lancement de l'appli, la ligne suivante est
présente :
-Xms64M ou -Xmx256M

Rahan


Avatar
Rahan
"Yves T" a écrit dans le message de
news:44e0977a$0$29562$
lance déjà ton JRE en mode -server (démarrage plus long mais performance
très améliorées et meilleur gestion des threads, synchronisation...)




Merci Yves.

dois-je lancer -server avec la commande java ? car j'ai une erreur :

C:Program FilesJavajre1.5.0_06bin>java -server
Error: no `server' JVM at `C:Program
FilesJavajre1.5.0_06binserverjvm.dll'

Avatar
Yves T
dois-je lancer -server avec la commande java ? car j'ai une erreur :

C:Program FilesJavajre1.5.0_06bin>java -server
Error: no `server' JVM at `C:Program
FilesJavajre1.5.0_06binserverjvm.dll'


Etrange, chez moi (win XP), j'ai bien l'option :
-client to select the "client" VM
-server to select the "server" VM

Oupsss! je viens de trouver à cette URL :
http://blog.developpez.com/index.php?blogQ&p89&more=1&c=1&tb=1&pb=1
"Note : Sous Windows la JVM Server n'est disponible que dans le JDK."

Avatar
Yves T
J'ai vérifier le script de lancement de l'appli, la ligne suivante est
présente :
-Xms64M ou -Xmx256M


256 peut être un peu léger si la machine est puissante.

D'une manière général :
- regarder si les threads et la concurrence sont correctement gérés
- utilises tu Swing? si oui, le "freeze" est souvent inhérent aux interfaces
graphiques java (sdk 1.6 doit résoudre ça il me semble)
- utilise un outil de profiling genre optimizeit pour voir au ça bloque
- gestion de ta mémoire correcte? le GC c'est bien beau mais ça résout pas
tout

AMHA, cherche du coté des threads bloquants.

Avatar
rahan
Yves T wrote:

J'ai vérifier le script de lancement de l'appli, la ligne suivante est
présente :
-Xms64M ou -Xmx256M



256 peut être un peu léger si la machine est puissante.


j'utilise un P4 3 Ghz avec technologie HT et 1 Go de DDRAM.

Qu'est ce que vous préconiser comme utilisation mémoire ?

Quel risque je pourrais avoir en changeant ce type de paramètre puisque
je ne suis pas sensé modifier ce type de paramètre... bon apres tout, je
peux toujours tester.


D'une manière général :
- regarder si les threads et la concurrence sont correctement gérés


je suppose que je peux voir les threads dans le gstionnaire de tache de
windows mais de quel processus ? javaw.exe ?

C'est qoi la concurrence ?

- utilises tu Swing? si oui, le "freeze" est souvent inhérent aux interfaces
graphiques java (sdk 1.6 doit résoudre ça il me semble)


Quel est le lien entre la SDK 1.6 et JRE 5.0 Update 6 ?
Qu'est ce que SDK m'apporetai de plus que JRE ? désolé, je débute un peu
avec JAVA.

- utilise un outil de profiling genre optimizeit pour voir au ça bloque


Non. Je vais installer ce produit et voir ce qu'il donne.

- gestion de ta mémoire correcte? le GC c'est bien beau mais ça résout pas
tout


Comment je pourrais savoir su ma mémoire est correctement gérée ?
C'est qoi le GC ?


AMHA, cherche du coté des threads bloquants.



Comment et avec quel outils ?

Merci de votre aide préciseuse

Rahan


1 2 3