मैं इस सरल कोड (एक 10 000 * 10 000 मैट्रिक्स) खुद से गुणा के लिए " 'System.OutOfMemoryException" अपवाद है:एक मैट्रिक्स के लिए स्मृति अपवाद से
#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
मैं निम्नलिखित त्रुटि है:
मैं अपने कंप्यूटर पर एक 8 जीबी मेमोरी है और मेरे ग के अनुसार:
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
इसलिए मैं 2 प्रश्न हैं alculation एक 10 000 * 10 000 मैट्रिक्स 381 एमबी लेना चाहिए [इस तरह से गणना की: मैट्रिक्स में
10 000 * 10 000 = 100 000 000
पूर्णांकों =>100 000 000 * 4 bytes (integers of 32 bits) = 400 000 000 => 400 000 000/(1024*1024) = 381 MB
] तो मैं नहीं समझ सकता क्यों है वहाँ एकOutOfMemoryException
अधिक आम तौर पर (यह नहीं मामले यहाँ मुझे लगता है कि है), मेरे पास यह धारणा है कि एफ # इंटरैक्टिव सभी डेटा पंजीकृत करता है और इसलिए स्मृति को अधिभारित करता है, क्या आप F # से बाहर निकले बिना एफ # इंटरैक्टिव द्वारा पंजीकृत सभी डेटा को मुक्त करने के तरीके के बारे में जानते हैं?
आपके मशीन में मनमाने ढंग से * मेमोरी * है; याद रखें, डिस्क स्पेस भी स्मृति है। रैम चिप्स डिस्क मेमोरी कैश करने के लिए बस एक तेज़ तरीका है। आपके पास 8 जीबी या .5 जीबी या 1000 जीबी भौतिक मेमोरी हो सकती है; यह पूरी तरह से अप्रासंगिक है। जिस स्मृति से आप बाहर चल रहे हैं वह * प्रति-प्रक्रिया वर्चुअल एड्रेस स्पेस * है, और इसका आपके पास कितना रैम या डिस्क स्पेस नहीं है। –