Jump to content



Memoryy leakkkkkkkkkkk!


nucleus

Recommended Posts

Επειδη ο προγραμματισμός δεν είναι πάντα δουλειά

Είναι πολλά 16 Gb μνήμης?Έχουμε κλείσει το pageFile?To .net framework έχει περιορισμούς στην μνήμη?

attachment.php?attachmentid=50620&stc=1&d=1339102475

Και όλα αυτα γιατί?Επειδή έφτιαξα ένα XMLdocument στην "μνήμη" με 10.000.000 elements :p ?

Αυτά

post-1215-1416076297,8058_thumb.jpg

Link to comment
Share on other sites

Γι' αυτό ειδικά σε τέτοιες περιπτώσεις δεν χρησιμοποιούμε ποτέ apis και έτοιμες βιβλιοθήκες... τα xml/json είναι πολύ απλά για το overhead (ειδικά σε OO) που προσθέτουν οι βιβλιοθήκες... Μακριά, φτιάξτε δικούς σας parser...

Link to comment
Share on other sites

Καλά ρε συ, τι σου έλεγα στον καφέ? :hehe:

Είχα πετύχει και εγώ το ίδιο πρόβλημα σε πειραματικό προτζεκτάκι. Κάπου πήρε το μάτι μου πως το όριο για κάθε process είναι 4gb αλλά δεν ασχολήθηκα παραπάνω.

Link to comment
Share on other sites

Να το κάνω με threads?1 process όριο τα 4 GB 3 threads = 12 GB?

Στα 1.000.000 elements δεν είχε πρόβλημα έφτιαξε και το XMLDocument στην μνήμη και το XML αρχείο μεγέθους 58 ΜΒ.Στο επόμενο μηδενικό tsoup exception.Όπως είδατε είναι C# o duke θα τα πάει καλύτερα?

Link to comment
Share on other sites

Να το κάνω με threads?1 process όριο τα 4 GB 3 threads = 12 GB?

Δεν είναι to XMLDocument thread-safe, simply forget it

Στα 1.000.000 elements δεν είχε πρόβλημα έφτιαξε και το XMLDocument στην μνήμη και το XML αρχείο μεγέθους 58 ΜΒ.

OMFG ! Για τόσα elements είναι αυτοκτονία η χρήση δομών στη μνήμη! :suicide2:

Αν στόχος είναι το διάβασμα use SAX for god's sake! Αν είναι η αποθήκευση δεδομένων, simply and elegantly use a Database to (bulk-) insert, ή αν χρειάζεσαι XML οπωσδήποτε, XmlWriter με συχνά όμως flush (όχι για την μπαταρία)

:lock:

Link to comment
Share on other sites

Μα το θέμα ήταν να δω πότε blockαρει δεν ήταν σοβαρός εκτελέσιμος κώδικας.Προφανώς και για 10.000.000 elements θα το έκανα με SAX.

Σωστός ο παίχτης, μάλλον stretch-test του υπερ-μηχανήματος σου ήθελες να κάνεις, τώρα καταλαβαίνω! :rubik:

Link to comment
Share on other sites

Καλά ρε συ, τι σου έλεγα στον καφέ? :hehe:

Είχα πετύχει και εγώ το ίδιο πρόβλημα σε πειραματικό προτζεκτάκι. Κάπου πήρε το μάτι μου πως το όριο για κάθε process είναι 4gb αλλά δεν ασχολήθηκα παραπάνω.

Δε ξέρω για τα Windows 64bit αν έχουν κάποιο όριο στη μνήμη που μπορεί να χρησιμοποιεί ένα process, αλλά σε linux 64bit που έτρεξα ένα πείραμα σε C μπορούσα να δεσμεύσω 6GB μνήμη για ένα process. Δε δοκίμασα παραπάνω γιατι έχω 8GB RAM και τρέχανε αρκετά processes εκείνη την ώρα.

[MENTION=1215]nucleus[/MENTION]: Μπορείς να τρέξεις το πρόγραμμα σε ένα live ubuntu 64bit να δεις (και να μας πεις) τη συμπεριφορά του και αν είναι διαφορετική απο αυτή στα windows...

Link to comment
Share on other sites

Και τα δύο παίζει να σε κόβουν, είναι virtual περιβάλλον και πρέπει να προστατέψουν το host. Περισσότερες πιθανότητες έχεις με το VirtualBox να είναι παραμετροποιήσιμο μέσα από κάποια μεταβλητή, έχει φανταστικό command line interface.

Link to comment
Share on other sites

Το virtualbox άφησε να δώσω μέχρι και 10GB μνήμης στο virtual για το ubuntu.Απλώς κάτι έκανα λάθος στο install.Βασικά εβαλα το image του ubuntu σε usb stick και το πέρασα στο cd drive του virtual.To virtual έχει και εικονικό hdd 8 GB.Δεν έχω ιδέα γιατί crashare ο installer για ubuntu.Θα το ξαναπροσπαθήσω σήμερα

Link to comment
Share on other sites

[MENTION=254]backgman[/MENTION]

Το ubuntu τα κατάφερε.10.000.000 εγγραφές με mono σε ubuntu 12.04 64 bit.

Κατανάλωση μνήμης πριν την εκτέλεση

attachment.php?attachmentid=50794&stc=1&d=1339623230

Ενω το πρόγραμμα ήταν σε εκτέλεση

attachment.php?attachmentid=50795&stc=1&d=1339623230

Μετά το πέρας της εκτέλεσης

attachment.php?attachmentid=50796&stc=1&d=1339623230

Το xml αρχείο βγήκε 616,7 ΜΒ.Το ubuntu έδωσε πάνω από 4 GB στο πρόγραμμα το οποιο δεν εκτελέστηκε μέσα από το mono develop.Είναι θέμα framework ή λειτουργικού η διαφορετική συμπεριφορά?Δεν έχω ιδέα :p

Σημείωση:Ο κώδικας δεν αλλάχτηκε καθόλου.Ίδιες εντολές στα windows ίδιες και στο Mono.

post-1215-1416076330,0331_thumb.png

post-1215-1416076330,4739_thumb.png

post-1215-1416076330,651_thumb.png

Link to comment
Share on other sites

Γιατί το κάνεις με c# ? Θα σου δώσει παραπάνω ευχέρια αν χρησιμοποιήσεις C. Αν πάλι θες να bench-άρεις την C# δεν είναι ίδια υλοποίηση του Mono και του .net framework στα παράθυρα και στο linux.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.