<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>.NET Framework</title><link>https://www.dotnetzone.gr:443/cs/forums/14/ShowForum.aspx</link><description>Θέματα για threading, remoting, reflection, exception handling, security, regex κλπ.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Memory leaks σε managed κώδικα ???</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/18302.aspx</link><pubDate>Mon, 09 Oct 2006 22:13:53 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:18302</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/18302.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=18302</wfw:commentRss><description>Ακόμα και όταν χρησιμοποιείς using, θα υπάρχουν πάντα "καλικάτζαροι" που θα σου κάνουν τη ζωή δύσκολη. Το using είναι καλό όταν δεν σε ενδιαφέρει να επιζήσει η μεταβλητή έξω από το using block. Δεν σε βολεύει όμως όταν θέλεις να καθαρίσεις fields ή static μεταβλητές. Και οπωσδήποτε δεν βοηθάει όταν η μεταβλητή δεν υποστηρίζει το IDisposable. Όπως για παράδειγμα ... οι COM wrappers!&lt;br /&gt;
&lt;br /&gt;
Όσον αφορά τον Process Explorer, είναι ένα πολύ βολικό εργαλείο το οποίο θα σου πει ότι υπάρχει κάποιο πρόβλημα. Δεν θα σου πει όμως πού είναι το πρόβλημα. Θα σου πει πόσα αντικείμενα υπάρχουν στη μνήμη, δεν θα σου πει όμως σε ποιές κλάσεις ανήκουν για να μπορέσεις να τα εντοπίσεις.&lt;br /&gt;
&lt;br /&gt;
Όπως και να το δει κανείς, ένας καλός profiler σε γλυτώνει από πολλούς μπελάδες. &lt;br /&gt;
&lt;br /&gt;
Υ.Γ. Για όποιον θέλει ένα βασικό profiler υπάρχει και ο CLR Profiler 2.0 από τη Microsoft στο http://www.microsoft.com/downloads/thankyou.aspx?familyId=A362781C-3870-43BE-8926-862B40AA0CD0&amp;displayLang=en. Μπορεί να μην έχει όλες τις δυνατότητες και ευκολίες του ANTS, είναι όμως τσάμπα και κάνει τη δουλειά.</description></item><item><title>Απ: Memory leaks σε managed κώδικα ???</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/18290.aspx</link><pubDate>Mon, 09 Oct 2006 20:01:18 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:18290</guid><dc:creator>Antonios Chatzipavlis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/18290.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=18290</wfw:commentRss><description>για αυτό τό λόγο υπάρχει η using στην C# και τώρα υπάρχει και στην νέα vb&lt;br /&gt;
&lt;br /&gt;
ακόμα πέρα από τον ANTS Profiler υπάρχει και ο process Explorer που προσωπικά το έχω βρει αρκέτά εξυπηρετικό ειδικά όταν του βάλεις τις κολώνες για .ΝΕΤ&lt;br /&gt;
&lt;br /&gt;
θα το βρείτε στο http://www.sysinternals.com/Utilities/ProcessExplorer.html&lt;br /&gt;
&lt;br /&gt;</description></item><item><title>Απ: Memory leaks σε managed κώδικα ???</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/18183.aspx</link><pubDate>Fri, 06 Oct 2006 23:03:19 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:18183</guid><dc:creator>Dimitris Papadimitriou</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/18183.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=18183</wfw:commentRss><description>&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;KelMan wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;Ας πούμε το circular reference στο COM ναι, είναι memory leak γιατί ό,τι και να κάνεις δεν μπορείς να το αποφύγεις.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Τι μου θύμισες τώρα!&amp;nbsp;Σε μια&amp;nbsp;VB6 εφαρμογή για να το αποφύγω αναγκαζόμουν να περνάω τον pointer του αντικειμένου και να το ξαναδημιουργώ! (Ναι, για όσους δεν το ξέρουν, η VB6 μπορεί να κάνει μια απλή διαχείριση pointers) Βέβαια ο κώδικας ήταν προσεκτικός γιατί αν στο μεταξύ το αντικείμενο είχε καταστραφεί και ο κώδικας πήγαινε να χρησιμοποιήσει τον pointer του... το πρόγραμμα εξαφανιζόταν από τα μάτια του χρήστη!&lt;/P&gt;
&lt;P&gt;Σίγουρα με τον garbage collector τα πράγματα είναι πιο απλά. Αυτό όμως δεν σημαίνει ότι με το COM reference counting δεν μπορούσες να κάνεις circular references ή ότι ο garbage collector είναι "καφετζού" και ελευθερώνει την μνήμη μαγικά! Άλλωστε και στο σπίτι μας,&amp;nbsp;αν δεν βγάλουμε έξω τα σκουπίδια... τότε απλά δεν θα τα πάρει το συνεργείο καθαριότητας!&lt;/P&gt;</description></item><item><title>Απ: Memory leaks σε managed κώδικα ???</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/18179.aspx</link><pubDate>Fri, 06 Oct 2006 21:46:22 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:18179</guid><dc:creator>elam</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/18179.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=18179</wfw:commentRss><description>Έχω την εντύπωση ότι ένας τίτλος "tracing memory leaks in .NET applications..." αν μη τι άλλο κατηγορεί τον GC. Με αυτόν τον τρόπο ίσως προσπαθεί να τραβήξει και την προσοχή.&lt;br&gt;&lt;br&gt;Πέρα από τις ... κατηγορίες όμως, το άρθρο είναι χρήσιμο, -και σ'ευχαριστούμε anjelinio- αφού μαθαίνουμε καλύτερα από τα λάθη. &lt;br&gt;&lt;br&gt;Όταν, τυχαίνει αυτά τα λάθη να τα κάνουν άλλοι, τότε, ακόμα καλύτερα!&lt;br&gt;&lt;br&gt;</description></item><item><title>Απ: Memory leaks σε managed κώδικα ???</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/18173.aspx</link><pubDate>Fri, 06 Oct 2006 21:05:55 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:18173</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/18173.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=18173</wfw:commentRss><description>H ένστασή μου (όχι προς τον Anjelinio, προς θεού) είναι ως προς τον όρο "memory leak". Ας πούμε το circular reference στο COM ναι, είναι  memory leak γιατί ό,τι και να κάνεις δεν μπορείς να το αποφύγεις. Αλλά αυτό που περιγράφεται στο blog είναι μια αναμενόμενη συμπεριφορά. &lt;br /&gt;
&lt;br /&gt;
Κατά τ'άλλα είναι χρησιμότατο το post ακριβώς για να υπενθυμίζει ότι πάντοτε χρειάζεται προσοχή - και αν θέλετε, καλή γνώση του συστήματος.</description></item><item><title>Απ: Memory leaks σε managed κώδικα ???</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/18171.aspx</link><pubDate>Fri, 06 Oct 2006 20:57:56 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:18171</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/18171.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=18171</wfw:commentRss><description>Να πω την αλήθεια, δεν βλέπω πουθενά να κατηγορεί ο αρθρογράφος το framework. &lt;br /&gt;
&lt;br /&gt;
Η ζωή χωρίς profiler μπορεί να αποδειχθεί μαρτύριο. Καλά με το managed κώδικα, μπορούμε να είμαστε λίγο τσαπατσούληδες και να αφήνουμε και κανένα reference που και που, ελπίζοντας ότι ο GC θα συμμαζέψει την κατάσταση. Για σκεφτείτε και το interop με COM components. Όπου πρέπει να καθαρίζουμε με το χέρι κάθε reference. Και οι wrappers δεν υποστηρίζουν IDisposable.......&lt;br /&gt;
&lt;br /&gt;</description></item><item><title>Απ: Memory leaks σε managed κώδικα ???</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/18170.aspx</link><pubDate>Fri, 06 Oct 2006 20:55:53 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:18170</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/18170.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=18170</wfw:commentRss><description>Ναι, σίγουρα. Το ηθικό δίδαγμα είναι ότι πάντοτε χρειάζεται προσοχή και συναίσθηση του τι κάνουμε...</description></item><item><title>Απ: Memory leaks σε managed κώδικα ???</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/18169.aspx</link><pubDate>Fri, 06 Oct 2006 20:48:21 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:18169</guid><dc:creator>anjelinio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/18169.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=18169</wfw:commentRss><description>Either way παιδιά, ακόμη και το απλώς να διαβάσεις την ιστορία είναι αρκετό κατα τη γνώμη μου, εξ' ού και το post εδώ. Αν φταίει ή δε φταίει το framework είναι άσχετο κατα τη γνώμη μου. Το θέμα είναι απλώς οτι αν το δείς κάπου, θα το σκεφτείς μετά στον κώδικα σου :)</description></item><item><title>Απ: Memory leaks σε managed κώδικα ???</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/18168.aspx</link><pubDate>Fri, 06 Oct 2006 20:44:34 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:18168</guid><dc:creator>elam</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/18168.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=18168</wfw:commentRss><description>Ο KelMan έχει δίκιο. Ο GC δεν είναι καφετζού για να μαντέψει ότι τα controls που περνάνε στο static ArrayList δεν πρόκειται να ξαναχρησιμοποιηθούν!&lt;br&gt;Πρόβλημα θα υπήρχε αν γίνονταν τα controls dispose.&lt;br&gt;&lt;br&gt;Όσον αφορά το Collect, αυτό θυμίζει την παροιμία με το χυλό και το γιαούρτι.&lt;br&gt;&lt;br&gt;Τελικά, αν δεν σχολιαζόταν το γεγονός με τους event handlers, θα έλεγα ότι πρόκειται για ... διαφήμιση του ANTS Profiler!&lt;br&gt;&lt;br&gt;</description></item><item><title>Απ: Memory leaks σε managed κώδικα ???</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/18165.aspx</link><pubDate>Fri, 06 Oct 2006 20:10:53 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:18165</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/18165.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=18165</wfw:commentRss><description>&lt;P&gt;Χμμμ... Memory leak? Φταίει ο managed κώδικας αν ο τύπος όρισε static ArrayList και δεν φρόντισε να το αδειάζει; Το managed περιβάλλον κάνει αυτό που πρόκειται να κάνει, θα κάνει deallocate όταν δεν υπάρχει reference στο ArrayList, δηλαδή όταν κλείσει την εφαρμογή. Θα το έλεγα memory leak αν δεν ελευθερόνονταν η μνήμη &lt;STRONG&gt;αφού&lt;/STRONG&gt; έκλεινε η εφαρμογή...&lt;/P&gt;
&lt;P&gt;OK, το δεύτερο με τους event handlers είναι ένα θέμα και το έχουμε πει ότι χρειάζεται προσοχή... Αλλά και πάλι, GC.Collect?!?! &lt;/P&gt;</description></item><item><title>Memory leaks σε managed κώδικα ???</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/18162.aspx</link><pubDate>Fri, 06 Oct 2006 19:37:13 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:18162</guid><dc:creator>anjelinio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/18162.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=18162</wfw:commentRss><description>"&lt;i&gt;Κάποτε ήταν πολύ εύκολο να εισάγουμε memory leaks στο πρόγραμμά μας, γράφοντας σε C / C++. Οι περισσότεροι πιστεύουμε οτι στον managed πλέον κόσμο, το memory leak είναι απλώς ... non-issue&lt;/i&gt;". Λάθος !&lt;br&gt;&lt;br&gt;Στο &lt;a href="http://www.simple-talk.com/dotnet/.net-tools/tracing-memory-leaks-in-.net-applications-with-ants-profiler/"&gt;συγκεκριμένο blog post&lt;/a&gt;, ο κύριος Mike Bloise εξιστορεί τη memory leaked εμπειρία του, καθώς και τη χρήση του ANTS Profiler για να βρεί τη λύση στο πρόβλημά του. Πολύ ενδιαφέρον διάβασμα,  ίσως ταρακουνήσει πολλούς απο 'μας να ξανασκεφτούν κάποια πράγματα για τον κώδικά μας :)&lt;br&gt;&lt;br&gt;&lt;br&gt;</description></item></channel></rss>