CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

java.lang.OutOfMemoryError: unable to create new native thread

4xkypjda
4xkypjda
Niveau 8
06 mai 2018 à 12:33:14

Salut les khey, pour un projet scolaire (paralleliser un code en java) j'obtiens toujours cette meme erreur: java.lang.OutOfMemoryError: unable to create new native thread pourtant je vois pas du tout ou ça part en couille dans mon code, n'aillant pas bcp d'ami qui puissent m'aider et que le prof m'envois clairement chier j'en viens a vous demander de l'aide

merci d'avance

RegleGraduee
RegleGraduee
Niveau 70
06 mai 2018 à 12:43:26

Essaye de changer les paramètres Xmx et Xms au lancement

Hadoop
Hadoop
Niveau 10
06 mai 2018 à 14:32:39

Montre ton code, sinon ça va être difficile

4xkypjda
4xkypjda
Niveau 8
06 mai 2018 à 15:27:57

je créer surement beaucoup trop de thread du coup je dois trouver d'ou viens ça mais je ne le trouve pas

4xkypjda
4xkypjda
Niveau 8
06 mai 2018 à 15:29:20

https://pastebin.com/KkVBxjsB

je recherche dans un liste un mots de façon parallel en coupant chaque fois la liste de façon a ne pas couper les most en deux mais jusqu'au premier espace

godrik
godrik
Niveau 30
06 mai 2018 à 15:44:08

Ah, tiens en voila un probleme intelligent. Ptet que je l'utiliserai en exam.

Quel est la longueur de ton texte? A mon avis ca cree beaucoup trop de threads. Si tu as un texte de 10000 mots, ca fait 10000 threads. Si tu as un texte de 1 milion de mots, ca fait 1 million de threads.

Tu obtiens un outofmemory exception parceque la JVM est configurer pour ne pas consommer trop de memoire sans que tu ai specifie que c'est ce que tu voulais. Alors tu pourrais changer Xmx et Xms pour donner plus de memoire a ta JVM.

Mais ca ne resoud pas vraiment le probleme de fond. Le probleme de fonc est que tu creer trop de thread. Ce que je te conseilles est d'arreter la decomposition recursive apres X decompositions recursives. Ca te permet de choisir le nombre de tache 2^X assez facilement. En changeant X tu vas augment le parallelisme et la consommation de ressource en memoire et en thread. C'est un parametre a tuner, mais ca devrait relativement bien se passer.

Tu fais ca dans quel cours?

4xkypjda
4xkypjda
Niveau 8
06 mai 2018 à 15:56:11

Le 06 mai 2018 à 15:44:08 godrik a écrit :
Ah, tiens en voila un probleme intelligent. Ptet que je l'utiliserai en exam.

Quel est la longueur de ton texte? A mon avis ca cree beaucoup trop de threads. Si tu as un texte de 10000 mots, ca fait 10000 threads. Si tu as un texte de 1 milion de mots, ca fait 1 million de threads.

Tu obtiens un outofmemory exception parceque la JVM est configurer pour ne pas consommer trop de memoire sans que tu ai specifie que c'est ce que tu voulais. Alors tu pourrais changer Xmx et Xms pour donner plus de memoire a ta JVM.

Mais ca ne resoud pas vraiment le probleme de fond. Le probleme de fonc est que tu creer trop de thread. Ce que je te conseilles est d'arreter la decomposition recursive apres X decompositions recursives. Ca te permet de choisir le nombre de tache 2^X assez facilement. En changeant X tu vas augment le parallelisme et la consommation de ressource en memoire et en thread. C'est un parametre a tuner, mais ca devrait relativement bien se passer.

Tu fais ca dans quel cours?

Merci beaucoup pour ta réponse :) J'arrête quand même la décomposition avec mon treshold T, ou ça n'a rien a voir? C'est pour mon cours de parallelisme and distribution a l'unif

godrik
godrik
Niveau 30
06 mai 2018 à 16:08:26

Il te faut une condition d'arret de decomposition. Apres comment tu l'implementes depends de ce que tu cherches a faire exactement.

4xkypjda
4xkypjda
Niveau 8
06 mai 2018 à 16:13:50

Le 06 mai 2018 à 16:08:26 godrik a écrit :
Il te faut une condition d'arret de decomposition. Apres comment tu l'implementes depends de ce que tu cherches a faire exactement.

En gros je cherche a voir si un mots ce trouve dans une liste, mais alors du coup mon treshold (séquentiel cut-off) il sert a quoi? Et a quelle moment je dois arrêter de décomposer ? c'est juste un if-test ?

godrik
godrik
Niveau 30
06 mai 2018 à 16:36:29

Ca depend sur quoi tu veux mettre ton threshols. J'imagine ici que tu met le threshold sur la longeur de la chaine. Si la chaine est plus petite que T characteres, alors tu aretes la decomposition parallel et tu passes en sequentiel.

Mais tu veux probablement avoir un autre parametres pour ne pas creer trop de threads non plus.

4xkypjda
4xkypjda
Niveau 8
06 mai 2018 à 16:51:54

Le 06 mai 2018 à 16:36:29 godrik a écrit :
Ca depend sur quoi tu veux mettre ton threshols. J'imagine ici que tu met le threshold sur la longeur de la chaine. Si la chaine est plus petite que T characteres, alors tu aretes la decomposition parallel et tu passes en sequentiel.

Mais tu veux probablement avoir un autre parametres pour ne pas creer trop de threads non plus.

Désolé mais je comprends pas pourquoi je devrais rajouter un deuxième paramètre si mon treshold s'occupe deja de ca...

godrik
godrik
Niveau 30
06 mai 2018 à 17:28:39

Parceque ce que tu veux eviter c'est d'avoir trop de thread. Tu veux eviter ca pour deux raisons:

  1. Parceque si les blocs sont trop petits, alors le travail sequentiel devient inefficace et tu vas perdre du temps
  2. Parceque si tu as trop de blocs, tu vas creer trop de threads et ca va thrasher le systeme d'exploitation

C'est plus simple d'avoir deux parametres. Un qui donne la taille du bloc le plus petit que tu veux. Et un qui dit a quel moment la decomposition va thrasher le systeme.
Mais en effet, si tu as ces deux valeures alors tu peux ajuster la taille de bloc pour faire la meme chose.

4xkypjda
4xkypjda
Niveau 8
06 mai 2018 à 20:26:14

Le problème venais du fait que je crée un forkjoinpool a chaque fois au lieu d'en créer un une fois, du coup j'avais enromemnt de forkjoinpool.

Merci a tout le monde pour votre aide

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment