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

Langage Java Discussion :

Gérer beaucoup de données et pool mémoire


Sujet :

Langage Java

  1. #1
    vic
    vic est déconnecté
    Membre chevronné

    Profil pro
    Inscrit en
    Août 2002
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 431
    Par défaut Gérer beaucoup de données et pool mémoire
    Hello,

    J'écris actuellement une appli de visualisation de données astronomiques qui représentent de gros volumes de données. Il s'agit d'une image radar de résolution 432000x144000 découpée en sous images de 1200x1200 (39Go de données au total). Le but est de pouvoir voir l'image dans son ensemble, et zoomer sur une zone librement.

    L'interface de Google Maps est à peu près ce à quoi je veux aboutir.

    Voilà le problème exposé, maintenant j'ai 2 problèmes de design et 2 questions :

    1) J'ai choisi de charger chaque chunk de 1200x1200 en mémoire au besoin, en les gardant en mémoire. Comment savoir si je vais avoir assez de mémoire pour ajouter un nouvel objet dans mon pool mémoire ? Je peux catcher OutOfMemoryError, mais je crois que la JVM est dans un piteux état si j'en arrive là. Comment calculer la taille nécessaire à la création d'un objet ?

    2) Vu le volume je ne peux pas tout charger en RAM. Pour afficher l'image, j'ai besoin de charger chaque zone 1200x1200 dans le champ de vision, de les zoomer au niveau voulu, et de les afficher correctement. Problème, à chaque déplacement ou zoom, je dois potentiellement recharger 39Go de données. Donc je vais devoir là aussi mettre en cache les images obtenues pour différents niveau de zoom. Pensez-vous que c'est faisable en dynamique, ou bien est-ce qu'il faudrait mieux que je génère des images pour chaque niveau de zoom sur le disque à l'avance ? (Principe utilisé par Google Maps)

    Bon, voilà, j'ai un peu jeté mes idées dans ce post, comme j'ai dit je suis en phase de design. Merci de m'aider et m'indiquer si je fais fausse route :-)

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    meme avec des disques durs rapides, lire 39G de données prend un bon bout de temps (de l'ordre de plusieurs dixaines de minutes). Je te recommenderais donc un prétraitement pour avoir différents niveaux de zooms et ne charger que les zooms qui t'intéressent, à la demande. Pour la mémoire, je te conseille de stocker tes données dans des classes de type SoftReference, qui est nettoyé par le garbage collector quand on manque de mémoire. C'est le composant idéal pour implémenter ce qui est, en fait, un cache mémoire. Tant que la mémoire est dispo ca reste en cache, quand la mémoire viens à manquer, ca commence à etre vidé.

    Tu peux, bien sur, te baser sur des système de cache déjà existant (ehcache, java caching system (jcs))

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Par défaut
    Salut,

    Si tu charges de grosses images, comme le dit tchize_, les soft references sont de rigueur.

    Mais une question tout de meme, as tu regarde du cote du format JPEG 2000 ?
    Car l'une des raisons de sa creation est justement ce que tu essayes de faire, c'est a dire de pouvoir faire des zoom sur une partie de grosses images ou de voir toute l'image en changeant les parametres de decodage (debit, ...) sans pour autant prendre enormement de memoire.

    Il existe des implementations de ce format dans plusieurs language dont java.

    Voici un exemple graphique d'un zoom sur une image JPEG 2000:
    http://www.oclc.org/contentdm/about/...ng/default.htm

    ---
    Farid

  4. #4
    vic
    vic est déconnecté
    Membre chevronné

    Profil pro
    Inscrit en
    Août 2002
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 431
    Par défaut
    Merci pour vos réponses. Je vais regarder du coté des SoftReferences, ça à l'air effectivement parfait pour un cache.

    Farid_92 : non je n'ai pas regardé le JPEG2000, en fait les données ne sont pas réellement des images mais des relevés topographiques radar. est-ce que le JPEG2000 supporte le lossless ?

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Par défaut
    salut,

    Oui il le supporte, tout comme jpeg d'ailleurs.

    Pour info, ce format est particulierement utilisé dans l'imagerie medicale et satellitaire...

    ---
    Farid

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/03/2010, 18h14
  2. Ecriture dans un fichier XML de beaucoup beaucoup de données
    Par sebastien2222 dans le forum Persistance des données
    Réponses: 8
    Dernier message: 10/08/2006, 09h39
  3. Remplir un StringGrid avec beaucoup de données
    Par Gaadek dans le forum Delphi
    Réponses: 9
    Dernier message: 08/06/2006, 20h47
  4. Insérer beaucoup de données
    Par cyber_jad dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 19/09/2005, 16h56
  5. [Choix SGBD] Application mono-poste mais beaucoup de données
    Par Wavyx dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 16/03/2003, 18h24

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