328
Le logiciel R - Maˆ ıtriser le langage
Prise en main
Ï
L’exemple suivant permet d’en illustrer l’utilisation.
> rm(list=ls()) # On supprime tous les objets de la session.
Taper trois fois gc(). On remarque que les valeurs affich´ ees se sont stabilis´ ees. On tape maintenant l’instruction suivante :
> x <- as.integer(3)
Retaper encore plusieurs fois gc() jusqu’` a stabilisation des r´ esultats affich´ es. On peut constater que la valeur de Vcells a augment´ e d’une unit´ e,
correspondant ` a 8 octets (taille minimale d’un bloc de donn´ ees). Rappelons qu’un integer occupe 4 octets mais sera quand mˆ eme stock´ e dans
une zone m´ emoire de 8 octets.
La quantit´ e totale de m´ emoire disponible pour R d´ epend de plusieurs facteurs :
– la RAM physiquement pr´ esente sur l’ordinateur ;
– la RAM d´ ej` a utilis´ ee par le syst` eme d’exploitation et par les diff´ erents
autres programmes en cours d’ex´ ecution sur le syst` eme (navigateur web
par exemple s’il est ouvert) ;
– le type de processeur (32 bits ou 64 bits), puisque la RAM est limit´ ee ` a
4 Go (1 Go = 1 024 Ko) pour les processeurs 32 bits (en r´ ealit´ e plutˆ ot 3
Go ou 2 Go), alors qu’elle est (vraiment !) beaucoup plus large pour des
processeurs 64 bits.
Remarque
Sur un processeur 32 bits, une adresse est cod´ ee sur 32 bits, la m´ emoire
adressable est donc limit´ ee ` a 2
32 adresses m´ emoire de blocs (8 cases), soit
2
32 octets (= 4 Go). Sur un processeur 64 bits, une adresse est cod´ ee sur 64
bits, la m´ emoire th´ eoriquement adressable est donc « limit´ ee » ` a 2
64 octets,
un nombre gigantesque (17 179 869 184 Go). En fait, elle est souvent beaucoup plus limit´ ee, de par l’architecture du processeur. Cette information
est disponible aupr` es du constructeur du processeur (sous l’appellation :
’Max Memory Size’).
Par ailleurs, il faut noter que R alloue de la m´ emoire pour la cr´ eation d’objets
de grande taille, et vide la m´ emoire de ces objets (lorsqu’ils ne sont plus utilis´ es)
par un processus appel´ e collection des d´ echets (garbage collection). On peut
forcer cette collection de d´ echets au moyen de l’appel de la fonction gc().
Le logiciel R - Maˆ ıtriser le langage
Prise en main
Ï
L’exemple suivant permet d’en illustrer l’utilisation.
> rm(list=ls()) # On supprime tous les objets de la session.
Taper trois fois gc(). On remarque que les valeurs affich´ ees se sont stabilis´ ees. On tape maintenant l’instruction suivante :
> x <- as.integer(3)
Retaper encore plusieurs fois gc() jusqu’` a stabilisation des r´ esultats affich´ es. On peut constater que la valeur de Vcells a augment´ e d’une unit´ e,
correspondant ` a 8 octets (taille minimale d’un bloc de donn´ ees). Rappelons qu’un integer occupe 4 octets mais sera quand mˆ eme stock´ e dans
une zone m´ emoire de 8 octets.
La quantit´ e totale de m´ emoire disponible pour R d´ epend de plusieurs facteurs :
– la RAM physiquement pr´ esente sur l’ordinateur ;
– la RAM d´ ej` a utilis´ ee par le syst` eme d’exploitation et par les diff´ erents
autres programmes en cours d’ex´ ecution sur le syst` eme (navigateur web
par exemple s’il est ouvert) ;
– le type de processeur (32 bits ou 64 bits), puisque la RAM est limit´ ee ` a
4 Go (1 Go = 1 024 Ko) pour les processeurs 32 bits (en r´ ealit´ e plutˆ ot 3
Go ou 2 Go), alors qu’elle est (vraiment !) beaucoup plus large pour des
processeurs 64 bits.
Remarque
Sur un processeur 32 bits, une adresse est cod´ ee sur 32 bits, la m´ emoire
adressable est donc limit´ ee ` a 2
32 adresses m´ emoire de blocs (8 cases), soit
2
32 octets (= 4 Go). Sur un processeur 64 bits, une adresse est cod´ ee sur 64
bits, la m´ emoire th´ eoriquement adressable est donc « limit´ ee » ` a 2
64 octets,
un nombre gigantesque (17 179 869 184 Go). En fait, elle est souvent beaucoup plus limit´ ee, de par l’architecture du processeur. Cette information
est disponible aupr` es du constructeur du processeur (sous l’appellation :
’Max Memory Size’).
Par ailleurs, il faut noter que R alloue de la m´ emoire pour la cr´ eation d’objets
de grande taille, et vide la m´ emoire de ces objets (lorsqu’ils ne sont plus utilis´ es)
par un processus appel´ e collection des d´ echets (garbage collection). On peut
forcer cette collection de d´ echets au moyen de l’appel de la fonction gc().
