Bonjour,
je travaille sur un projet qui comprend des traitements sur des images en niveaux de gris.
Il y a peu, j'ai posté au sujet de la conception d'une classe Matrice générique.
Pour résumer, à présent j'ai une classe abstraite Matrice qui contient les attributs et le constructeur suivant :
et j'ai deux classes qui étendent cette classe : MatriceInt et MatriceDouble.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public abstract class Matrice<T> { protected int nbLigne; protected int nbCol; protected T[][] mtx; public Matrice(int nbLigne, int nbCol) { this.nbLigne = nbLigne; this.nbCol = nbCol; } [...] }
Voici les constructeurs de MatriceInt :
Les tests unitaires pour MatriceInt et MatriceDouble fonctionnent bien.
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
32
33
34 public class MatriceInt extends Matrice<Integer> { /** * Constructeur matrice vide * @param nbLigne : Nombre de lignes * @param nbCol : Nombre de Colonnes */ public MatriceInt(int nbLigne, int nbCol) { super(nbLigne, nbCol); this.mtx = new Integer[nbLigne][nbCol]; } /** * Constructeur d'une matrice a partir d'un tableau d'entiers a 2 dimensions * @param tableau d'entiers 2D */ public MatriceInt(Integer[][] tableau) { //Recuperation des dimensions de la matrice super(tableau.length, tableau[0].length); this.mtx = new Integer[nbLigne][nbCol]; //Copie de la matrice for(int i=0; i<this.nbLigne; i++) { for(int j=0; j<this.nbCol; j++) this.mtx[i][j] = tableau[i][j]; } } [...] }
Par contre, en lançant les tests sur le reste de l'application, ça bloque !
Je me retrouve avec des
à chaque fois que je teste quelque chose qui fait appelle aux matrices de la classe MatriceInt.java.lang.OutOfMemoryError: Java heap space
[...]
Je comprends pas trop d'où ça peut venir, car -sauf erreur de ma part - un Integer fait 32 bits, ce qui correspond bien à la taille d'un int (4 octets)...
Y'a-t-il une subtilité qui m'échappe dans l'utilisation des génériques ou dans l'utilisation des Integer?
Je sais pas du tout où chercher là, et ça m'embêterait de devoir faire machine arrière au niveau de mes classes Matrice... Alors si vous avez une idée d'où ça peut venir, merci d'avance
PS : il va sans dire qu'avait le changement des classes Matrice, l'application marchait très bien et il n'y avait pas de problème de mémoire
Partager