tengo la excepción "'System.OutOfMemoryException" para este código simple (una matriz de 10 * 10 000 000) multiplicado por sí mismo:Fuera de excepción de memoria para una matriz
#time
#r "Microsoft.Office.Interop.Excel"
#r "FSharp.PowerPack.dll"
open System
open System.IO
open Microsoft.FSharp.Math
open System.Collections.Generic
let mutable Matrix1 = Matrix.create 10000 10000 0.
let matrix4 = Matrix1 * Matrix1
tengo el siguiente error:
System.OutOfMemoryException: An exception 'System.OutOfMemoryException' has been raised
Microsoft.FSharp.Collections.Array2DModule.ZeroCreate[T](Int32 length1, Int32 length2)
Microsoft.FSharp.Math.DoubleImpl.mulDenseMatrixDS(DenseMatrix`1 a, DenseMatrix`1 b)
Microsoft.FSharp.Math.SpecializedGenericImpl.mulM[a](Matrix`1 a, Matrix`1 b)
<StartupCode$FSI_0004>[email protected]() dans C:\Users\XXXXXXX\documents\visual studio 2010\Projects\Library1\Library1\Module1.fs:line 92
Stop due to an error
tengo, pues, 2 preguntas:
que tengo una memoria de 8 GB en mi equipo y de acuerdo a mi c ÁLCULO una matriz de 10 000 * 10 000 debería tener 381 MB [calculado de esta manera:
10 000 * 10 000 = 100 000 000
enteros en la matriz =>100 000 000 * 4 bytes (integers of 32 bits) = 400 000 000 => 400 000 000/(1024*1024) = 381 MB
] así que no puedo entender por qué hay unOutOfMemoryException
En términos más generales (que no es el caso aquí creo), Tengo la impresión de que F # interactivo registra todos los datos y, por lo tanto, sobrecarga la memoria, ¿conoces alguna forma de liberar todos los datos registrados mediante F # interactivo sin salir de F #?
Tiene arbitrariamente mucha * memoria * en su máquina; recuerde, el espacio en el disco también es memoria. Los chips RAM son solo una forma rápida de almacenar en caché la memoria del disco. Podría tener 8GB o .5 GB o 1000GB de memoria física; es completamente irrelevante. La memoria de la que se está quedando es * espacio de direcciones virtuales * por proceso, y eso no tiene nada que ver con la cantidad de memoria RAM o espacio de disco que tiene. –