GC检测用于查看堆中是否有对象不再被程序使用。如果这样的对象存在,这些对象占用的内存就可以被回收利用。(如果堆中没有可用内存空间时,new操作符将会抛出OutOfMemoryException异常)GC是怎样知道一个对象是否还被程序使用呢?你可以想象一下,这不是一个容易回答的问题。
每一个程序都有一组根节点(roots),它们用于识别定位托管堆中的对象或空(null)对象指向的存储空间。比如,程序中所有全局对象指针或静态对象指针都被看作是程序根节点(roots)的一部分。另外,线程栈中任何局部变量或参数对象...
                            
                            
                                分类:
Web程序   时间:
2014-06-30 07:33:05   
                                阅读次数:
327
                             
                    
                        
                            
                            
                                1. 在IDE中查看Log信息
当程序运行垃圾回收的时候,会打印一条Log信息,其格式如下:
D/dalvikvm:  , , , 
GC_Reason表示导致垃圾回收的原因以及当前的回收类型,包括以下几类:
    GC_CONCURRENT:当堆中对象数量达到一定是触发的垃圾收集
    GC_FOR_MALLOC:在内存已满的情况下分配内存,此时系统会暂停程序并回收内存
  ...
                            
                            
                                分类:
移动开发   时间:
2014-06-29 23:28:34   
                                阅读次数:
374
                             
                    
                        
                            
                            
                                本文已经迁移到: http://cpp.winxgui.com/cn:garbage-collection-in-cplusplus使用智能指针(smart pointers) http://www.codeproject.com/cpp/garbage_collect.asp 原理:基...
                            
                            
                                分类:
编程语言   时间:
2014-06-29 19:12:03   
                                阅读次数:
232
                             
                    
                        
                            
                            
                                .NET CLR将所有资源分配到托管堆上,这有点像C语言中的堆但是你不用去释放资源因为闲置资源在.NET中将被自动释放。现在就有一个问题了,托管堆是怎么知道一个对象什么时候将不再被程序使用?现今有很多的GC算法。每一个算法都针对某一特定环境进行调优,进而获得最好的性能。这篇文章着重于.NET CLR使用的GC算法。.Net下的GC完全解决了开发者跟踪内存使用以及控制释放内存的窘态。然而,你或许想要理解GC是怎么工作的。此系列文章中将会解释内存资源是怎么被合理分配及管理的,并包含非常详细的内在算法描述。同时,...
                            
                            
                                分类:
Web程序   时间:
2014-06-28 07:50:39   
                                阅读次数:
386
                             
                    
                        
                            
                            
                                本篇文章记录字符设备的驱动框架:1.定义cdev接口体和class结构体#define HELLO_CNT 2static int major = 0;//主设备号为0,需要让系统自动生成主设备号static struct cdev hello_cdev;static struct class *c...
                            
                            
                                分类:
系统相关   时间:
2014-06-27 22:36:58   
                                阅读次数:
423
                             
                    
                        
                            
                            
                                Tote bags are usually described in a general way, but they are really detailed picture of the bear style appearance. These three major reasons define ...
                            
                            
                                分类:
其他好文   时间:
2014-06-27 17:37:31   
                                阅读次数:
158
                             
                    
                        
                            
                            
                                jvm性能调优的目地:1)控制jvm的堆栈大小。比方当你的程序年轻代对象在某个时间段产生的比較多的时候,就须要控制年轻代的堆大小。同一时候还要控制总的JVM大小避免内存溢出2)控制GC的行为。GC是一个后台处理,可是它也是会消耗系统性能的,因此要依据执行程序的特点来更改GC行为。3)控制jvm线程的...
                            
                            
                                分类:
其他好文   时间:
2014-06-27 11:33:39   
                                阅读次数:
162
                             
                    
                        
                            
                            
                                很多人感觉自己的elipse启动比较慢,其实并不是因为装的插件太多或者是导入的项目有点大,而是因为参数的设置不合理导致的。可以在eclipse.ini里面添加-Xloggc:gc.log看看启动的日志。下面简单的说一下通过优化一下配置来节约eclipse的启动时间,文中的数据是我本机的环境,我本机内...
                            
                            
                                分类:
系统相关   时间:
2014-06-27 00:31:27   
                                阅读次数:
355
                             
                    
                        
                            
                            
                                iOS开发多线程篇—GCD的常见用法一、延迟执行1.介绍iOS常见的延时执行有2种方式(1)调用NSObject的方法[selfperformSelector:@selector(run)withObject:nilafterDelay:2.0];// 2秒后再调用self的run方法(2)使用GC...
                            
                            
                                分类:
移动开发   时间:
2014-06-26 23:00:12   
                                阅读次数:
468