Bonjour,
j'ai besoin d'utilisr ces données volumineuses et de faire de gros traitements dessus. Un des problèmes, outre la charge CPU est la consommation mémoire.
J'utilise des objets et des types primitifs. Que faut-il faire pour limiter la consommation mémoire ?
Si j'ai besoin de modifier un tableau (comme agrandir sa taille), je suis obligé de faire un new TYPE[nouvelle_taille].
Cependant j'ai l'impression que l'ancien contenu reste en mémoire ce qui conduit fatalement à une erreur out of memory.
En C, je desallourais les données inutiles. Dans mon cas, que dois-je faire ?
Par exemple avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 int [] tab1 = new int[1000000]; int [] tab2 = new int[100000] //init des données //j'ai besoin de regrouper deux tableaux dans tab1 int [] tmp = new int[tab1.length+tab2.length]; System.arraycopy(tab1, 0, tmp, 0, tab1.length); System.arraycopy(tab2, 0, tmp, tab1.length, tab2.length); // maintenant qu'est-ce que je fais ? // 1 : solution de base tab1 = tmp; // 2 : solution nulle tab1 = null; tab2 = null; tab1 = tmp; // 3 : solution de boeuf tab1 = null; tab2 = null; System.runFinalisation(); System.gc(); //sleep et on recommence une fois. tab1 = tmp; // 4 : obiwan kénobi tab1 = obiwanKenobi;
Partager