为什么Java System.gc()没有按预期工作?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了为什么Java System.gc()没有按预期工作?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含784字,纯文字阅读大概需要2分钟。
内容图文
![为什么Java System.gc()没有按预期工作?](/upload/InfoBanner/zyjiaocheng/762/ec845738910b4d3e82ee6fb784ba5326.jpg)
我有两个函数,一个是insert(),另一个是startGC().
我将首先调用insert()方法,这将占用大约300MB的堆空间.
之后,我将调用startGC(),它应释放在堆中分配的内存,因为所有向量对象都是函数的本地对象,但它没有发生.
private void insert()
{
Vector v=new Vector();
Vector v1=new Vector();
Vector v2=new Vector();
String str="Hello";
for (long i = 0L; i < 999999L; i++) {
v.add(str + i);
v1.add(str + i);
v2.add(str + i);
}
v=null;
v1=null;
v2=null;
}
private void startGC()
{
System.gc();
}
我的问题:
1)为什么垃圾收集在这个例子中不起作用.
2)如何使JVM垃圾收集所有未使用的内存块.
任何代码示例都实现相同.
解决方法:
如前所述,您只能建议GC删除您的对象.您可能要做的唯一事情是设置heapmax(例如:-Xmx512m).您可以通过这种方式影响gc的运行.
这可能是Java最大的缺点之一.如果你真的需要堆,你必须使用像cpp这样的语言,它们不会使用vm来编译应用程序.
内容总结
以上是互联网集市为您收集整理的为什么Java System.gc()没有按预期工作?全部内容,希望文章能够帮你解决为什么Java System.gc()没有按预期工作?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。