请问System.gc()这个方法执行后是立即回收内存吗?
 A a = new A();
a = null;
System.gc();

把A创建的对象的引用置为空后,执行System.gc();
就立即把创建的这个对象的所占的内存回收掉了吗?
还是说得等到当前内存不足时他才会去回收?System.gc()只是提前让系统去观察下
当前系统的内存情况而已?

3个回答

不会的,System.gc();只是建议Java虚拟机对此部分内存进行回收,但是不一定会发生GC

【System.gc();】此函数建议JVM进行GC,只是建议而非一定,

很多情况下它会触发主GC

参考链接:http://blog.csdn.net/jiyiqini/article/details/46725647

视当时内存使用量而定,并不是一定的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
System.gc 没有立即执行
System.gc 没有立即执行 作为一个安卓开发人员,你一定见过OOM() 最近在做一个大图片加载的项目,由于内存实在是太小,需要对bitmap进行gc清空,这个时候我发现一个问题,GC的处理并不及时,为啥。。。。。。。 private void gcBitmap(Bitmap bitmap) { if (bitmap != null && !bitmap.isRecycl...
C# 立即回收内存
[System.Runtime.InteropServices.DllImportAttribute("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize", ExactSpelling = true, CharSet = System.Runtime.InteropServices.CharSet.Ansi, SetLast...
请问 UpdateAllViews 这个函数是立即执行的吗?
我在一个循环中对 UpdateAllViews 进行了若干次调用,发现虽然循环是正确执行了rn但是仅仅 UpdateAllViews 进行了一次调用。。也就是仅仅执行了一次视图的刷新。rnrnUpdateAllViews 是不是采用发送消息的方式来通知各个视图进行刷新呢?rnrn有没有什么办法可以保证在循环中立即执行视图的刷新?rnrnrn谢谢!
调用System.gc没有立即执行的解决方法
查看源码当我们调用System.gc()的时候,其实并不会马上进行垃圾回收,甚至不一定会执行垃圾回收,查看系统源码可以看到 /** * Indicates to the VM that it would be a good time to run the * garbage collector. Note that this is a hint only. There i
java回收内存的方法
在使用完临时对象后,把对象的引用设置成为null;是不是就可以起到回收内存的作用(java垃圾回收机制就会回收该块内存)rn还有哪些防止内存漏洞的方法呢?
DataTable.Clear方法后,为什么内存不回收?
DataTable.Clear方法后,为什么内存不回收,Form结束后,才回收,为什么?
请问怎么样回收内存
MDI中关闭一个表单后。想回收这个表单在打开到关闭之间占用的内存。要怎么样做呢。
这个是释放内存吗
rn CPtrArray pos;rn ……rn int end = pos.GetSize();//kill pos?rn for(unsigned short i = 0; i
Mysql执行INSERT操作后是立即写硬盘的吗?
请教各位,如果只是单独执行一条INSERT操作,mysql会不会自动将数据缓存,等到一定大小或条数后再执行写硬盘操作,以减少磁盘I/O次数? rn我理解设置“bulk_insert_buffer_size”只是在INSERT语句附带有多个VALUES值时效率较高,对INSERT语句仅附带有一个VALUES值并不能减少磁盘读写次数,不知道理解的对不对?
回收内存
root用户 #sync #echo 3 > /proc/sys/vm/drop_caches
finalize()方法和System.gc()方法的功能
package trkj; //此类说明了 finalize 关键字以及 System.gc() 的作用 /* finalize 类似 c++中析构函数,表示对象即将消亡时,调用此方法 gc() 方法表示把拉级回收器启动,把拉圾收走 */ public class Person { private String name; private int age; public Person
system.gc()方法的使用
在程序中频繁的手动调用是否会反而导致内存的使用量变大?从而导致系统当机?rn比如对一个视频进行循环播放,在每次播放完毕后进行一次手动调用system.gc(),然后在进行从新播放,这样会对程序有影响吗?谁能帮帮忙~
方法是顺序执行的吗?
假设有一个类A,它有2个方法M1,M2。M1因为定时器会周期性的执行,M2由用户操作引发执行。rn问题是,程序执行的时候,一定会保证M1,M2的执行顺序吗?M1 M2或M2 M1,就像事务调度一样。rn会不会在M2执行的过程中,M1开始执行呢?rn如果Dotnet自身并不这样保证,那么怎么才能够实现这种需求呢?rn如果是多线程,可以使用通过对象锁定进行线程同步,现在遇到的情况是M1,M2 均在一个线程中执行?rnrn不知道谁有这方面的经验,谢谢指教!
centos7执行内存拉圾回收shell命令
centos7执行内存拉圾回收shell命令 runCmd.sh “sync” all runCmd.sh “echo 1 > /proc/sys/vm/drop_caches” all 执行之前的情况 [root@node111 ~]# runCmd.sh "free -g" all *******************node111***************************...
如何强制回收对象,立即回收那种
c# 如何强制释放一自定义的对象 没有dispose方法,命令GC强制回收,这很重要,我在一个过程里生成一个局对对象,但过程结束了,对象还在内存里,这成了严重的BUG
这个方法是临时表吗?
看到使用下面方法自定义分页,使用了tmp,这个是作为临时表插入数据库的吗??rnSelect Top “& n &” * From(Select Top “& StartIndex &” ID,日志内容 as [内容],进展时间,地点,进展及完成情况,参加首长及领导,附注,反馈 From log Where 处ID= “ & ddlDptSelect.SelectedItem.Value & “Order By ID Desc) as tmp Order By tmp.ID
C#使用List.Clear()方法可以让GC回收内存吗?
问题:我现在有一个list,里面放了若干对象,因为业务需要,程序运行后根据用户需求,要把list清空,再装入新的东西,每一次用之前都会清空它,然后装入新的东西,请问,内存是否会泄漏?测试:我设计一个list,清空用clear方法,装入新东西用add(new obj)。public void GameInit() { PlayerCnt = 0; ...
程序退出,泄露的内存能被回收,是这样吗?
感觉32位段页式内存管理,逻辑地址到物理地址映射能保证如此,Win32上是不是这样?rn谢谢各位了。
请问这个是汇编语言吗?
()(*)*+,-+-.+-/./0./101201323423543656756878978:9;<Z;=<;%=;'%;>';?>;2? @rn@2rn@A2A02#4?2<ZBCDBECFGHFIGJKLJMKNOPNQORSTRUSVWXVYWZ[\Z][^_`^a_bcdbecfghfigjkljmknopnqorstrusvwxvywz|z~€~????????????????
请问这个是病毒吗?
近来有个问题,我的XP装的软件并不多,但现在启动的速度非常非常的慢,从启动时出现WinXP图标和中间那个从左向右滚动的条开始,一直到输完密码完全进行系统这个过程,整个都非常非常的慢,可能要4-5分钟时间。进入系统后,还可能会弹出1-2个什么系统服务错误的对话框,开始时鼠标也不灵活。但只要进入系统后,速度好像就不慢了,至少没有明显的感觉。正常使用机器,网络也没觉得有其它的异常。系统进程也没觉得有什么异常,就是有lsass.exe,csrss.exe,现在也搞不清楚这两个进程有没有问题了。请问谁知道这是怎么回事?是什么病毒吗?为什么启动过程这么慢?rnrn系统WinXP,打过所有补丁。D版金山毒霸也没有查出病毒。rnrn感谢
请问这个是jquery代码吗?
[code=JScript]rn$('example').addEvent('click',function()rn $(this).setStyle('color','green').show()rn)rn[/code]rnrn这个$('example')代表的是啥啊?jquery不是只能这样$('#example'),或者$('.example')这样写吗 ?
请问这个是BUG吗?
arn27112.87 rn2342.92rn24769.95 (a1+a2)rn13377.6rn8720.1rn2672.25rn-3.63798E-12 (a3-a4-a5-a6)rnrnrn应该是0怎么会是个小数?rn
垃圾回收器可以马上回收内存吗?
总结Java基础相关的面试题,比如:nJava基础部分n面向对象n异常n集合n多线程nIO流
请问Nokia 7650有自动回收内存的功能吗?
各位高手:rn我做的一个小游戏每一关都要读入新的图像.读入前我先把上一关的图像置为null,用Runtime的gc()回收内存.可是几关后我都会碰到"内存已满".rn我在每一关前把total memory和free memory的值都打印出来,发现total memory每次都在增加,譬如180k->356k->446k->705k->内存已满,看着好象7650并没有真正回收到内存.rn但是在模拟器上运行一点问题都没有,total memory为500k,刚进每一关前的free memory都在编450k左右,说明上一关的内存已经被回收了.rn所以想问一下各位是否碰到过这样的问题,是Nokia 7650自动回收内存有问题还是我的程序里有bug.哪里我能找到Nokia 7650自动回收内存的资料.rn非常感谢.
关于应用内存数据回收后,重新启动
情景: 小米手机在运行中更改权限后,再次进入应用后,位于前台的activity还是之前打开的那个,但是会重新从onCreate开始加载,有时会出现不可预料之错。 于是,找原因,发现application也重新进入onCreate了。 最后,在application中onCreate中判断位于前台的页面是否是启动页,如果不是则跳到启动页。 判断是否位于前台显示:
如何回收显示位图后的内存?
这个是我显示位图的函数:rn HDC memDC;rn HDC hDC = hWnd->GetDC()->m_hDC;rn BITMAP bm;rn RECT rect;rn hWnd->GetClientRect(&rect);rn int bmSize = ::GlobalSize(hbitmap);rn hbitmap = (HANDLE)::LoadImage(NULL,rn m_filePath,rn IMAGE_BITMAP,rn 0,rn 0,rn LR_LOADFROMFILE|LR_CREATEDIBSECTION);rn GetObject(hbitmap,sizeof BITMAP,&bm);rn memDC = CreateCompatibleDC(hDC);rn ::SetStretchBltMode(hDC,COLORONCOLOR);rn SelectObject(memDC,hbitmap);rn ::StretchBlt(hDC, rect.left, rect.top, rect.right, rect.bottom, memDC, rn 0, 0, bm.bmWidth, bm.bmHeight,+SRCCOPY);rn DeleteObject(hbitmap);rn DeleteObject(&bm);rn请问怎么回收我分配的内存?
sql数据库内存能自动回收吗?
我用的leadbbs4.0论坛+sql数据库,数据库内存消耗很大,当用户增加到180人时内存到480Mrn(服务器内存512M)rn服务器出现http 1.1 新建会话错误rn有什么设置sql server处理内存的办法吗?rnrn
操作系统会回收泄漏掉的内存吗?
一个发生了内存泄漏的程序在关闭后,操作系统能否把所有泄漏掉的内存收回来?
这样delete 内存能被回收吗?
char* buf;rnCTest* p = new CTest();rnbuf = (char*)p;rndelete buf;rn
mysql会自动回收释放内存吗
一个事务中使用replace into.....select.....插入大概6000多条数据,然后查询创建一些临时表时进行关联update操作rn进行这个事务后,mysql进程占用的内存一下增加了150M,进程管理器的mysql进程总内存变为200多M(之前为40,50M),并且一直是200M内存rn事务中创建的临时表在程序中也drop掉了,但是mysql占用的内存为什么一直不变呀,不会自动释放啊rn假设进行比较大的插入或更新操作,mysql进程占用的内存一直增大,却不能自动释放,会不会有一天就崩溃了
listView刷新后,如何回收内存?
[code=C#]rn List data = new List();rn private void Window_Loaded(object sender, RoutedEventArgs e) //程序加载后,给listView添加内容rn rnrn for(int i=0;i<60000;i++)rn rn this.data.Add(new stringi+"aaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcv" );rn rn listView.DataContext = data;rn rnrn private void button_click(object sender, EventArgs args) //一个按钮的click事件的触发操作。rn rn this.data.Clear();rn this.listView.Items.Refresh();rn rnrn[/code]rnrn上面的代码中,程序加载后,由于listView显示了60000个条目,因此内存占用很大,大概100多Mb。rnrn但是当我点击按钮,触发了button_click()函数来清空listView后,内存占用依然没有降低下来。我该如何释放这些内存?rnrn求代码。。
请问 这个方法是在干什么 ?
[code=Java] private String makePdf(Connection mCon,rn HttpSession session, rn Em0003ActionForm actionForm, rn List> result,rn String[] paperArray,rn String jwnetDemandCd) throws Exceptionrn String msg = "";rn rn try rn Iterator> ite = result.iterator();rn List manifestList = new ArrayList();rn while (ite.hasNext()) rn Map map = (HashMap) ite.next();rn manifestList.add(DataChangeUtil.replaceNull(map.get("MANIFEST_ID")));rn rn rn PdfWriterControler pdfWriter = new PdfWriterControler();rn pdfWriter.setWebDir(jwnetDemandCd);rn msg = pdfWriter.pdfWriter(mCon, session, manifestList, paperArray);rn if(DataCheckUtil.isStringEmpty(msg)) rn fileName = pdfWriter.getFileName();rn rn catch (Exception e) rn throw e;rn rn return msg;rn [/code]
进程重启后,泄露的内存能否回收
某些带不完善内存管理功能的实地址操作系统,用户软件内存泄露是有可能无法清理的。 Windows、Linux不会产生这种情况,因为其是虚地址操作系统,每个程序的内存环境是独立的,程序退出时进程控制模块会把整个独立环境删除,里边使用的内存自然也都释放了。
JedisPool的close()方法执行后回收连接问题初探
自Jedis3.0版本后jedisPool.returnResource()遭弃用,官方重写了Jedis的close方法用以代替官方建议应用redis.clients.jedis#Jedis的close方法进行资源回收close()源码如下:正常连接的回收,走的是3409行的returnResource(this)方法而实际上这个方法也是被弃用了的先不扯这些,过时就过时吧 ,我们往下看。关闭方法里...
APP及时回收图片,释放内存的方法
APP占用内存很大一部分是因为把图片读到缓存里面了,如果在关闭activity或者fragment或者dialog等的时候,不及时回收图片资源,就会越积越多,APP越来越卡。 解决办法: 及时recycle掉bitmap占用的内存 //缓存图片回收 public static void recycleBitmap(Drawable drawable){         if (dra
请问这个THIS是指这个函数吗?
public void UpdateUiSystemParameter()rn rn请问这是一个函数吧?那里面用到了好几个THIS是代表它的意思吗,rn以前只看到在类中用THIS,这函数里也用THIS?rnrnrn[img=https://img-bbs.csdn.net/upload/201710/17/1508225144_126760.png][/img]
请问,j2me怎么手动回收内存?
如题
System.gc()和System.runFinalization()功能一模一样吗???
好象在CSDN上,有人说这两者功能一模一样的,既然一样,,在同一个类里,何必定义两个方法。
请问在VB中它自己能不能回收内存?
例如,如果我动态申请几个动态rnprivate obj1 as MyClassrnprivate obj2 as MyClassrn'申请空间rnset obj1=new MyClassrnset obj2=new MyClassrn.........rn.......rn'释放空间rnset obj1=nothingrnset obj2=nothingrnrn请问有没有自己显式地释放空间?好象在现在所有的程序,都是没有人这样做的,不像C++rnrnrn
这个activity finish 后 为什么内存没被回收 ?谁阻止了回收?!!!
n```npublic class LoginActivity extends FragmentActivity nn UMSocialService mController = UMServiceFactory.getUMSocialService("com.umeng.login");n @InjectView(R.id.photo_welcome)n RoundedImageView photoWelcome;n @InjectView(R.id.photo_welcome_con)n FrameLayout photoWelcomeCon;n @InjectView(R.id.photo_slogan)n ImageView photoSlogan;n @InjectView(R.id.login_type_title)n TextView loginTypeTitle;n @InjectView(R.id.login_type_title_con)n FrameLayout loginTypeTitleCon;n @InjectView(R.id.btn_mobile)n FloatingActionButton btnMobile;n @InjectView(R.id.btn_wechat)n FloatingActionButton btnWechat;n @InjectView(R.id.btn_sina)n FloatingActionButton btnSina;n @InjectView(R.id.btn_qq)n FloatingActionButton btnQq;n @InjectView(R.id.action_con)n LinearLayout actionCon;n @InjectView(R.id.real_con)n LinearLayout realCon;nn private Activity mContext;n private RoundProgressDialog nProgress;n private SHARE_MEDIA[] mPlatformsMap;n public String deviceToken = "";n private Timer tokenTimer;n private int waitTime = 120;n private int tokenCount = 0;n private View.OnLongClickListener toggleServer = new View.OnLongClickListener() n @Overriden public boolean onLongClick(View v) nn if (SystemUtils.debug) n ApiUtils.mDomain = ApiUtils.testDomain.equalsIgnoreCase(ApiUtils.mDomain) ? ApiUtils.realDomain : ApiUtils.testDomain;n BuyueApp.get().setTestMode(ApiUtils.testDomain.equalsIgnoreCase(ApiUtils.mDomain));nn SystemUtils.showMsg("change to: \n " + ApiUtils.mDomain, mContext);n EventDao evtDao = new EventDao(BuyueApp.get().getApplicationContext());n BoardDao boardDao = new BoardDao(BuyueApp.get().getApplicationContext());n CardDao cardDao = new CardDao(BuyueApp.get().getApplicationContext());n SyncDao syncDao = new SyncDao(BuyueApp.get().getApplicationContext());n syncDao.markDirty(Sync.EVENT);n syncDao.markDirty(Sync.BOARD);n try n evtDao.deleteAll();n boardDao.deleteAll();n cardDao.deleteAll();n catch (SQLException e) n SystemUtils.attemptPrintError(e);n n n return false;n n ;nn @SuppressLint("NewApi")n @Overriden protected void onCreate(Bundle savedInstanceState) n super.onCreate(savedInstanceState);n mContext = LoginActivity.this;n BuyueApp.get().addActivity(LoginActivity.this);n n setContentView(R.layout.activity_login);n ButterKnife.inject(this);n //首次执行导入.db文件n DataManager dbHelper = new DataManager(this);n dbHelper.openDatabase();n dbHelper.closeDatabase();nn// umeng messagen PushAgent mPushAgent = PushAgent.getInstance(mContext);n mPushAgent.enable();n// umeng analyticsn MobclickAgent.updateOnlineConfig(mContext);n// umeng upadaten UmengUpdateAgent.update(this);n UmengUpdateAgent.setUpdateOnlyWifi(false);n deviceToken = "";n tokenTimer = new Timer();nn TimerTask tokenTask = new TimerTask() n @Overriden public void run() nn if (deviceToken != null && !"".equalsIgnoreCase(deviceToken)) n SpUtils.setSpStr(SpUtils.TEP_TOKEN,deviceToken);n tokenTimer.cancel();n else n deviceToken = UmengRegistrar.getRegistrationId(mContext);n tokenCount++;n n if (tokenCount > 300) n tokenTimer.cancel();n n n ;n tokenTimer.schedule(tokenTask, 0, 100);nn PushAgent.getInstance(mContext).onAppStart();n FileUtils.deleteSave();n FileUtils.clearCache();n regCasts();n adjustMyLayout();n initLogin();n TextView typeTitle = (TextView) findViewById(R.id.login_type_title);n typeTitle.setOnLongClickListener(toggleServer);n nn private void adjustMyLayout() n n nn private void regCasts() n SystemUtils.registerReceiver(receiver, NameUitls.ACTION_DO_LOGIN, mContext);n SystemUtils.registerReceiver(finishReceiver, NameUitls.ACTION_LOGOUT, mContext);n SystemUtils.registerReceiver(timeOutReceiver, NameUitls.ACTION_TIMEOUT, mContext);n nn private void unRegCasts() n SystemUtils.unregisterReceiver(receiver, mContext);n SystemUtils.unregisterReceiver(finishReceiver, mContext);n SystemUtils.unregisterReceiver(timeOutReceiver, mContext);n nnn private void initPlatformMap() n mPlatformsMap = new SHARE_MEDIA[]SHARE_MEDIA.GOOGLEPLUS, SHARE_MEDIA.WEIXIN, SHARE_MEDIA.SINA, SHARE_MEDIA.QQ;n nn nn```n
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数