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 :

Pointeurs et mémoire


Sujet :

Java

  1. #1
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut Pointeurs et mémoire
    Bonjour,

    j'aurai une question sur l'occupation en mémoire d'un tableau.
    Voilà, j'ai deux ensembles d'éléments d'une classe A, disons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    A[] set1 = new A[N] ;
    A[] set2 = new A[M] ;
    ...
    // Tous les éléments sont instanciés, il n'y a aucun null.
    Chaque élément d'un ensemble pointe sur un très grand nombre (parfois la totalité) des élément de l'autre ensemble. Dans ma classeA, j'ai donc quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    List<A> pointeurs = new ArrayList<A>() ;
    Chaque élément a donc une liste de pointeurs vers les éléments de l'autre ensemble.
    Ma question est en fait : étant donné que c'est une liste de pointeurs, qu'elle est l'occupation mémoire (RAM) d'une liste de pointeurs ?
    Y a t-il un moyen de le savoir ?

    Merci par avance,
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Un profiler mesurerait combien de mémoire tu consommes concrètement.

    Mais la mémoire utilisée dépend de la JVM utilisée, qui dépend de l'architecture de la machine, bien sûr.

    En général 4 ou 8 octets par pointeur. Et une ArrayList peut réserver un pourcentage de plus que les pointeurs vraiment insérés, si on ne lui donne pas des instructions plus précises.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    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 : 45
    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
    Je rajoute que ça deviens encore plus compliqué à calculer si on a activé la compression des références mémoire dans la JVM

  4. #4
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Merci à tous les deux pour vos réponses !

    Citation Envoyé par thelvin Voir le message
    Mais la mémoire utilisée dépend de la JVM utilisée, qui dépend de l'architecture de la machine, bien sûr.
    Comme d'habitude :@ J'en ai plus que marre des dépendances à l'architecture !

    Citation Envoyé par thelvin Voir le message
    En général 4 ou 8 octets par pointeur.
    J'espérais très naïvement que ce soit moins...


    Citation Envoyé par thelvin Voir le message
    Et une ArrayList peut réserver un pourcentage de plus que les pointeurs vraiment insérés, si on ne lui donne pas des instructions plus précises.
    J'ai pris une ArrayList pour l'exemple, mais je peux utiliser un tableau.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  5. #5
    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 : 45
    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
    Ca pourrait difficiliement être moins. 32 bits sont nécessaires pour adresser 4G de mémoire. Au delà, on passe en 64 bits (sur les architectures 64 bits).

    Si la quantité de référence commence à être ce qui occupe la majorité de ton application, il est peut être temps de revoir la manière dont tu as architecturé tes données

  6. #6
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    En fait je développe un réseau de neurones complet (DNN, CNN, etc.).
    J'étais parti sur une architecture très légère afin de minimiser l'utilisation de la RAM et accélérer les calculs. Malheureusement, cela complexifie énormément la partie apprentissage :-(
    Donc adieu architecture lite & fast, bonjour simple & fat.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  7. #7
    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 : 45
    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
    Combien de neurones typiquement? en dessous de 65.000 il doit y avoir moyen de réduire l'espace mémoire consommé en jouant avec des tableaux de short.


    Au dela de plusieurs dixaines de millions, c'est la notion même d'objet qui va devenir problématique Tu risque de commencer à sérieusement handicaper le GC je pense

  8. #8
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    En fait, c'est pour définir les connexions/synapses !
    Un neurone d'une couche, pointe (normalement) sur certains neurones de la couche précédente.
    J'avais au début une architecture dans laquelle je me passais totalement des connexions entre neurones des différentes couches, mais c'était très dur à maintenir pour chaque nouvelle évolution de mon RDN.
    En prenant une architecture couche/neurones/synapses, j'ai une architecture plus logique, facile à maintenir, etc., mais qui demande de stocker les connexions.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Initialisation de pointeurs / desallocation mémoire
    Par ikuzar dans le forum Débuter
    Réponses: 1
    Dernier message: 15/02/2011, 18h44
  2. Réponses: 6
    Dernier message: 19/09/2005, 19h48
  3. Tester qu'un pointeur pointe une zone mémoire valide
    Par Captain_JS dans le forum C++Builder
    Réponses: 2
    Dernier message: 25/08/2005, 19h23
  4. [Pointeur] Allocation mémoire
    Par Rayek dans le forum Langage
    Réponses: 22
    Dernier message: 20/05/2005, 10h26
  5. [Info][Mémoire] utilisée pour un pointeur null
    Par thomas_strass dans le forum Langage
    Réponses: 14
    Dernier message: 04/11/2004, 12h48

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