IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Question d'un fou qui veut fatiguer Java


Sujet :

Java

  1. #1
    Membre émérite
    Avatar de Voyvode
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 476
    Points : 2 678
    Points
    2 678
    Par défaut Question d'un fou qui veut fatiguer Java
    Bonjour tout le monde, voici un hypothétique et authentique projet de fou.

    Par exemple (totalement absurde vous allez voir ), je veux créer un modèle informatique de la France ou chaque habitant sera représenté par un objet avec les infos classiques d'une carte d'ID. ( I'm watching you. )

    Fou comme je suis j'ai fait le test mais dans un premier temps j'ai instancié une classe complètement "creuse", et j'ai trouvé que le génération de 60 000 000 d'objet était "longue" (ok ça fait beaucoup ).

    1. Est-il possible d'accélérer ce processus ?
    2. Une fois que j'aurais tout ces objets, est-ce que l'ordi va pas ramer, sachant que j'ai 1Go de RAM ? (pauv' ramasse-miette )
    3. En gros combien Java peut supporter d'objet au maximum ?

  2. #2
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    ben le nombre d'objets dépend de la mémoire disponible. Mais tu devrais penser à une conception moins "folle" ne nécessitant pas d'instancier tous les objets en même temps. Si tu n'instancie que les habitants de la Creuse ca sera déjà plus léger ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  3. #3
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par Willy_XIII
    Bonjour tout le monde, voici un hypothétique et authentique projet de fou.

    Par exemple (totalement absurde vous allez voir ), je veux créer un modèle informatique de la France ou chaque habitant sera représenté par un objet avec les infos classiques d'une carte d'ID. ( I'm watching you. )

    Fou comme je suis j'ai fait le test mais dans un premier temps j'ai instancié une classe complètement "creuse", et j'ai trouvé que le génération de 60 000 000 d'objet était "longue" (ok ça fait beaucoup ).

    1. Est-il possible d'accélérer ce processus ?
    2. Une fois que j'aurais tout ces objets, est-ce que l'ordi va pas ramer, sachant que j'ai 1Go de RAM ? (pauv' ramasse-miette )
    3. En gros combien Java peut supporter d'objet au maximum ?
    Pour accélérer le processus de création des objets, il faut que les objets à créer soit plus simple, mais tu peux pas améliorer énormémement le processus.

    Je pense que t'arriveras pas à faire tenir 60'000'000 d'objets dans un giga de RAM.

    le nombre d'objets que peut supporter Java dépend uniquement de ta mémoire et de la taille des objets.

    Si tu veux vraiment réaliser un tel projet, il ne faut surtout pas instancier toutes les personnes d'un coup, il faut instancier au fur et à mesure et que tu en as besoin en faisant bien attention de libérer les objets dont tu n'as plus besoin. En fait, les objets devront se créer au fur et à mesure que les endroits sur lesquels il se trouvent se découvrent.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 238
    Points : 267
    Points
    267
    Par défaut
    Salut,

    Si tu arrive a réaliser ton projet (et je te le souhaite ) il te faudra tres largement plus d'une machine pour qu'il puisse être crédible...
    Donc je pense que Java peut tres bien supporter autant d'objet que d'habitant en France, mais c'est la machine qui ne suivra pas du tout... lol

    a+

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Citation Envoyé par wichtounet
    le nombre d'objets que peut supporter Java dépend uniquement de ta mémoire et de la taille des objets.
    Hum on peut egalement supposer qu'une JVM 64-bits peut addresser un plus grand espace memoire (c'est effectivement le cas) mais aussi un plus grand nombre d'objets (a verifier) qu'une JVM 32-bits.

    Sinon oui, tout charger en meme temps n'est clairement pas la meilleure des solutions pour ce genre de probleme. Il faut traiter par bloc/region/departement et donc le traitement est plus long puisqu'il y a des temps de chargement/dechargement a rajouter.

    Sinon, soyons fous egalement, si tu as la place (pour mettre tous les ordis, le cablage, les systemes de sauvegarde redondants, ...) et les moyens (pour tout acheter/louer, payer la maintenance + l'electricite, ...), tu peux evidement partager/distribuer ton modele sur plein plein d'ordi/JVM et donc finallement arriver a effectivement modeliser toute la france en temps reels...
    Ou alors des solutions a budget plus limite ou tu encourage d'autres personnes a t'aider volontairement et gratuitement en te donnant du temps CPU genre SETI@Home ou F@lding (je crois).

    Bon courage...
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  6. #6
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Comme Google Map : seule la partie de la carte utile est affichée, sachant qu'un surface un peu plus grande de la carte visible est chargée en mémoire. Donc comme déjà dit, tu charges les objets utiles en mémoire ET les objets voisins aussi pour éviter à l'utilisateur des attentes trop longues (pseudo cache par page).
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  7. #7
    Membre émérite
    Avatar de Voyvode
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 476
    Points : 2 678
    Points
    2 678
    Par défaut
    Merci pour vos réponses !

    Je reprécise qu'il s'agit d'un exemple dans l'absurde... quoiqu'en en informatique l'absurde ne l'est jamais éternellement.

    ben le nombre d'objets dépend de la mémoire disponible. Mais tu devrais penser à une conception moins "folle" ne nécessitant pas d'instancier tous les objets en même temps. Si tu n'instancie que les habitants de la Creuse ca sera déjà plus léger ...
    Je m'en doutais, mais je voulais savoir s'il existait une limite vu que c'est le ramasse-miette qui gère tout ça, au cas où.
    C'est vrai que cette modélisation est plus adaptée à une ville à l'heure actuelle. Ou peut-être pour un jVatican...

    Pour accélérer le processus de création des objets, il faut que les objets à créer soit plus simple, mais tu peux pas améliorer énormémement le processus.

    Je pense que t'arriveras pas à faire tenir 60'000'000 d'objets dans un giga de RAM.
    Pour ça que j'ai commencé avec une classe sans rien dedans.
    Mais je ne me faisait pas d'illusion. En fait c'est mon PC que je mets à bout.

    Si tu veux vraiment réaliser un tel projet, il ne faut surtout pas instancier toutes les personnes d'un coup, il faut instancier au fur et à mesure et que tu en as besoin en faisant bien attention de libérer les objets dont tu n'as plus besoin. En fait, les objets devront se créer au fur et à mesure que les endroits sur lesquels il se trouvent se découvrent.
    Le problème c'est qu'une personne peut être considérée comme "utile" à partir du moment où elle est née, peut-être même dès qu'elle est un foetus... (ah... savoureuse froideur et machiavélisme sinique de l'informatique )

    Si tu arrive a réaliser ton projet (et je te le souhaite ) il te faudra tres largement plus d'une machine pour qu'il puisse être crédible...
    Donc je pense que Java peut tres bien supporter autant d'objet que d'habitant en France, mais c'est la machine qui ne suivra pas du tout... lol
    Une petite ferme de Mac Pro Octo-core avec 16Go de RAM chacun devrait faire l'affaire.

    Hum on peut egalement supposer qu'une JVM 64-bits peut addresser un plus grand espace memoire (c'est effectivement le cas) mais aussi un plus grand nombre d'objets (a verifier) qu'une JVM 32-bits.
    Le 64-bit me paraît indispensable pour pouvoir gérer efficacement autant de RAM.

    Sinon oui, tout charger en meme temps n'est clairement pas la meilleure des solutions pour ce genre de probleme. Il faut traiter par bloc/region/departement et donc le traitement est plus long puisqu'il y a des temps de chargement/dechargement a rajouter.
    C'est assez génant comme compromis, et à moins d'avoir une vitesse de lecture/écriture énorme, l'option de la ferme me paraît être la plus appropriée une fois de plus.

    Sinon, soyons fous egalement, si tu as la place (pour mettre tous les ordis, le cablage, les systemes de sauvegarde redondants, ...) et les moyens (pour tout acheter/louer, payer la maintenance + l'electricite, ...), tu peux evidement partager/distribuer ton modele sur plein plein d'ordi/JVM et donc finallement arriver a effectivement modeliser toute la france en temps reels...
    Ou alors des solutions a budget plus limite ou tu encourage d'autres personnes a t'aider volontairement et gratuitement en te donnant du temps CPU genre SETI@Home ou F@lding (je crois).
    C'est clair que j'imagine mal une seule JVM gérer tout ce beau monde.
    Le temps CPU, c'est pas mal, mais ça règle pas le problème de la RAM...
    Sinon pour amortir tout ça je pourrais toujours négocier avec CIA, Navy, FBI, DST, KGB et autres "voyeurs professionnels". Je suis sûr que ça les botterait.

    Comme Google Map : seule la partie de la carte utile est affichée, sachant qu'un surface un peu plus grande de la carte visible est chargée en mémoire. Donc comme déjà dit, tu charges les objets utiles en mémoire ET les objets voisins aussi pour éviter à l'utilisateur des attentes trop longues (pseudo cache par page).
    Ca pourrait être une solution intéressante pour les clients qui consulteront cette base. Par contre, une fois encore, je crains que la lecture/écriture ne sacrifie trop les performances.

    Bon, j'espère avoir été assez clair et, hum... concis. ^^

    Sinon, vous avez une idée de la taille en RAM que prend le plus petit objet java qui puisse exister ?

  8. #8
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 321
    Points : 360
    Points
    360
    Par défaut
    Pour la taille des objets java, tu peux jeter un coup d'oeil a tes programmes avec des profilers tels que tptp ou le profiler de netbean (que je ne connais que sommairement donc je garantie pas qu'il donne de telles informations)

Discussions similaires

  1. Simu en java, questions d'un débutant qui a RTFM
    Par leccux dans le forum Langage
    Réponses: 4
    Dernier message: 20/08/2007, 16h57
  2. [RegEx] str_replace qui veut pas replacer
    Par lamoufle dans le forum Langage
    Réponses: 5
    Dernier message: 13/09/2005, 12h37
  3. ShellExecute qui veut pas faire son boulot...
    Par giloutho dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 31/08/2005, 11h49
  4. java web start qui veut pas se lancer
    Par calvin dans le forum JWS
    Réponses: 4
    Dernier message: 30/06/2004, 11h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo