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

Entrée/Sortie Java Discussion :

[JNI] allocation mémoire du node natif


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    Mars 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement en 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Par défaut [JNI] allocation mémoire du node natif
    Bonsoir,

    Voilà, actuellement je suis confronté à un soucis de limitation mémoire dans une application JAVA, utilisant pas mal de code C++ via des appels JNI.

    Le code C++, complié en .dll, charge des fichiers de gros volume, ce qui bien sur alloue un certain paquet de mémoire.

    Du fait de l'OS, nous savons que le processus ne peut dépasser les 2go de mémoire. Mais je peine à trouver la moindre info sur comment et où la mémoire que le C++ requier est allouée ?

    Comme j'arrive aux limites de la mémoire, je cherche à savoir si un p'ti coup de Garbage collector libererais de la mémoire pour le C++ par exemple.

    Autre possibilité : il semblerait que j'ai un crash lorsque j'alloue une zone mémoire d'une certaine taille. normal si cette zone contigüe en mémoire n'existe pas, mais comment en être sur ? (en gros la question est plutot : comment l'opérateur new décide si oui ou non il y a succes lors de l'allocation ? est ce que toutes les zones mémoire dispo sont testées ? juste une ? est-ce que l'utilisation du code dans le JNI change quelque chose ?)

    Merci de tous les tuyaux que vous pourrez me donner.

    Ange_blond.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 93
    Par défaut
    Bonjour,

    Je suis intéressée par la réponse également étant confrontée au même problème...

    Merci !

  3. #3
    Membre émérite
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    Mars 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement en 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Par défaut
    Un petit Up, j'avais oublié ce topic

    Alors je n'ai pas de réponse précise, mais j'ai néanmoins quelques infos de plus.
    Java alloue environ 1.7 Go de mémoir pour le process.
    Les allocations mémoire de Java et du code natif (c++/c) se font dans le meme process, et donc dans le meme espace mémoire.
    Il semble que Java réserve un bloc mémoire contigu, ce qui expliquerait la limitation de 1.7Go et non pas 2Go comme tous les process win32.

    Les allocations mémoire du code natif se font dans l'espace memoire réservé, mais pas dans le tas java (heap space).
    Ce tas est parametrable avec l'option -Xmx.

    En gros, l'espace memoire disponible pour le code natif est = 1.7 Go - Xmx
    -Xmx (Java heap max size) --> Native code maximal allocation (allocates by 10Mo step)
    10 --> 1770
    50 --> 1730
    100 --> 1680
    200 --> 1580
    300 --> 1490
    500 --> 1290
    800 --> 1000
    1200 --> 600
    1500 --> 300
    1600 -->(could not reserve error) -
    Généré par un simple code java/c++ basé jni. le c++ aloue la mémoire par pas de 10Mo tant que malloc retourne une adresse valide (!= NULL)

    Quelques liens en vrac qui peuvent aider :

    http://www.ibm.com/developerworks/ja...ememory-linux/
    http://sinewalker.wordpress.com/2007...-memory-limit/
    http://forums.sun.com/thread.jspa?threadID=621332
    http://www.coderanch.com/t/480963/Pe...ng-out-Virtual

Discussions similaires

  1. Problème d'allocation mémoire d'un tableau de nodes !
    Par AntiLoxy dans le forum Irrlicht
    Réponses: 5
    Dernier message: 14/11/2011, 11h11
  2. Limite Allocation Mémoire d'un tableau d'entier
    Par l9ft b9hind dans le forum C++
    Réponses: 5
    Dernier message: 27/10/2005, 19h29
  3. Allocation mémoire
    Par DestyNov@ dans le forum C++
    Réponses: 9
    Dernier message: 23/08/2005, 08h09
  4. [Pointeur] Allocation mémoire
    Par Rayek dans le forum Langage
    Réponses: 22
    Dernier message: 20/05/2005, 10h26
  5. Allocation mémoire dynamique
    Par ITISAR dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 21/01/2005, 09h59

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