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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Idelways
    Homme Profil pro
    Développeur Ruby on Rails / iOS
    Inscrit en
    Juin 2010
    Messages
    1 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Ruby on Rails / iOS

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 374
    Par défaut BigMemory résout-il le « problème universel » de Java ? Terracotta sort une solution aux limitations du GC
    BigMemory résoud-t-il le « problème universel » de Java ?
    Terracotta sort une solution aux limitations du ramasse-miettes du langage



    La société Terracotta, spécialiste du développement open-source s'attaque aux limitations de mémoire imposées aux applications Java.

    L'entreprise décrit sa solution, baptisée « BigMemory » et disponible en bêta depuis hier comme une avancée majeure pour résoudre le "problème universel" du ramasse-miettes Java.

    La solution est proposée sous forme de module pour « Enterprise EhCache », un gestionnaire de cache développé par Terracotta.

    Compatible avec la machine virtuelle Java, BigMemory délivre un cache séparé afin de libérer les applications Java des limitations de mémoire imposées par le ramasse-miettes.
    Une empreinte mémoire plus importante est dès lors allouée aux applications.

    Pour rappel, le ramasse-miettes (en anglais Garbage Collector) est un mécanisme qui libère automatiquement les cases mémoire occupées par un objet quand plus aucune référence n'y pointe.

    Le développeur n'a donc pas à s'occuper de la gestion de la mémoire comme dans d'autres langages, ce qui évite les fuites de mémoire et de nombreux problèmes.

    Mais selon Terracotta, le ramasse-miettes est le "talon d'Achiles" des applications Java, pénalisant les performances des applications et limitant l'accès aux données.

    "Java est coincé dans le monde des petites quantités de mémoire à cause du ramasse-miette" estime Mike Allen, directeur de la gestion des produits à Terracotta.

    Les avantages affichés par Terracotta sont :

    • L'augmentation de la quantité de mémoire utilisable, permettant aux applications de mettre en cache 64GB ou plus dans un dépôt non-accessible au passages du ramasse-miettes.
    • Les performances des applications seraient améliorées en tournant sur moins de machines virtuelles et avec plus de cache
    • Eliminer les réglages et des solutions de contournement inefficaces destinées à optimiser le fonctionnement du ramasse-miettes


    Reste à savoir si BigMemory arrivera à se faire une place parmi les nombreuses solutions de contournement déjà existantes.


    Pour participer à la bêta privée de BigMemory, une inscription est requise, le produit sera publiquement lancé en Octobre.

    Source : le site de Terracota, Inc

    Et vous ?

    Êtes-vous pour ou contre le ramasse-miettes de Java ?
    Que pensez-vous de BigMemory ?
    Quelle solution utilisez-vous pour contourner ce problème ? Et quelles sont ses limitations ?

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 549
    Par défaut
    azul propose des solutions pour ça depuis belle lurettes...
    http://www.azulsystems.com/

  3. #3
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 230
    Par défaut
    Et plutôt que de dépenser des fortunes en cherchant à le contourner, pourquoi ne pas optimiser le GC?

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    L'ennui c'est que Sun a passé une décade à optimiser le GC et que malgré les optimisation apportées à Java 1.5 on se tape encore de OutOfMemoryError et on doit faire des allocations harcodées de RAM au lancement de la JVM dans bien des cas.

    J'avoue que ça aurait été là un des rares points interressant si IBM avait racheté Sun : en effet, du temps de Java 1.3 et 1.4, la JVM cliente d'IBM avait toujours eut un GC et une allocation de la mémoire bien plus performante que celle de Sun. Ça aurait été interressant de voir leur technologie intégrée au Java mainstream (la JVM d'IBM pour Windows n'a jamais été la plus répandue du marché).

    Maintenant j'ignore totalement si Oracle a aussi développé son propre GC et technologies natives aux platformes et, si c'est le cas, j'imagine qu'on ne verra pas leur intégration avant au moins Java 7.
    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

  5. #5
    Membre averti

    Inscrit en
    Octobre 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 30
    Par défaut
    C'est interessant mais ca reste mystique quand meme: C'est pas en RAM, c'est pas sur le disque dur, c'est rapide et constant... Ok d'accord, ils sont ou les 100 Gigas de données?

    Pour le GC de sun il peut etre multithreadé (pour les collections mineurs) en utilisant -XX:+UseParallelGC, il est d'ailleurs possible de préciser le nombre de thread: -XXarallelGCThreads=

  6. #6
    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
    Citation Envoyé par pip1000 Voir le message
    C'est interessant mais ca reste mystique quand meme: C'est pas en RAM, c'est pas sur le disque dur, c'est rapide et constant... Ok d'accord, ils sont ou les 100 Gigas de données?
    C'est en RAM, mais pas dans la zone gérée par le GC. Grosso merdo si je comprends bien c'est avoir une zone parallèle à java où c'est ton programme qui gère les données (entrée et sortie de la zone)

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 51
    Par défaut
    @tchize_ Et XX:+UseConcMarkSweepGC (Concurrent Mark and Sweep) c'est quoi

    @Florian Goo Sans rentrer dans les détails, en C/C++ tu as vraiment intérêt à savoir ce que tu fais, encore plus que Java, typiquement ou est-ce tu alloues ton espace mémoire, la stack ou dans la heap, c'est important, parceque si les objets sont alloués sur la heap en C/C++ et bien question processeur il risque d'y avoir des caches miss (vous savez sur les caches généralement appelés L1, L2).
    Alors qu'en Java, c'est la JVM qui décide, et elle a le temps d'optimiser le code natif (c'est le WarmUp Time).
    En plus de ça aujourd'hui le nombre d'instruction machine pour allouer de la mémoire en Java juste sur la Heap est de 4 instructions (10 sur une JVM 1.4), en C/C++ les malloc utilisent en général entre 70 et 100 instructions machines à chaque appel et pourtant ce code a eu le temps de devenir mature pendant ces ~50 dernières années.
    Les techniques de GC dans les langages managés commencent à peine à montrer leur nez, ça fait quand même ~20ans. Et il y a plus de chance d'optimiser sur un gros ensemble que sur 1 seul appel. En revanche il y a d'autres problèmes ailleurs.

    @pip1000 Il n'y a pas des masses de possibilités pour cacher des objets du GC en Java pur. Je suppose très fortement l'utilisation des ByteBuffers qui permettent d'allouer de la mémoire native, et donc non géré par le GC, celà dit le OOM sont toujours possibles s'il n'y a plus de place. L'avantage est que la mémoire native est directement géré par l'OS d'ou les temps de réponses élevés. Et c'est aussi pour ça qu'on peut monter à des JVM avec des mémoires de l'ordre de la dizaine de GB. Ça se règle avec -XX:MaxDirectMemorySize.

    La difficulté de Ehcache serait donc plus de gérer la mémoire, l'éviction etc.
    Cela dit c'est peut-être une bonne idée, mais j'ai encore des doutes sur les difficultés techniques qu'on pourrait rencontrer là dessus.

Discussions similaires

  1. Réponses: 7
    Dernier message: 17/09/2010, 14h57
  2. Problème d'ajout de projets dans une solution
    Par derfez dans le forum Visual Studio
    Réponses: 6
    Dernier message: 17/05/2010, 09h18
  3. Probléme: un client java qui consomme une array avec soap
    Par mejdi331 dans le forum Services Web
    Réponses: 1
    Dernier message: 28/01/2009, 16h54
  4. [debutant][Applet] problèmes insertion applet java
    Par mlequim dans le forum Applets
    Réponses: 5
    Dernier message: 11/07/2005, 09h50
  5. [SQLPLUS] - Problème de Triggers Java
    Par farcis dans le forum Oracle
    Réponses: 7
    Dernier message: 23/12/2004, 09h21

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