加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

什么是Java内存管理最佳实践?

发布时间:2020-12-15 07:36:10 所属栏目:Java 来源:网络整理
导读:我正在接管以前开发人员的一些应用程序.当我通过 Eclipse运行应用程序时,我看到内存使用情况和堆大小增加了很多.经过进一步调查,我发现他们正在循环中创建一个对象以及其他东西. 我开始经历一些清理工作.但是我经历的越多,我就越想问“这实际上会做什么吗?
我正在接管以前开发人员的一些应用程序.当我通过 Eclipse运行应用程序时,我看到内存使用情况和堆大小增加了很多.经过进一步调查,我发现他们正在循环中创建一个对象以及其他东西.

我开始经历一些清理工作.但是我经历的越多,我就越想问“这实际上会做什么吗?”

例如,不是在上面提到的循环之外声明变量而只是在循环中设置它的值……它们在循环中创建了对象.我的意思是:

for(int i=0; i < arrayOfStuff.size(); i++) {
    String something = (String) arrayOfStuff.get(i);
    ...
}

String something = null;
for(int i=0; i < arrayOfStuff.size(); i++) {
    something = (String) arrayOfStuff.get(i);
}

我不正确地说底部循环更好吗?也许我错了.

另外,在上面的第二个循环之后,我将“某些东西”设置为null?这会清除一些记忆吗?

在任何一种情况下,我可以遵循哪些良好的内存管理最佳实践,这将有助于在我的应用程序中保持低内存使用率?

更新:

到目前为止,我感谢每个人的反馈.但是,我并没有真正询问上面的循环(尽管根据你的建议,我确实回到了第一个循环).我正在努力获得一些我可以留意的最佳实践. “当你完成使用Collection时,清除它”的界限.我真的需要确保这些应用程序不会占用太多内存.

解决方法

不要试图超越VM.第一个循环是建议的最佳实践,包括性能和可维护性.在循环之后将引用设置回null将不保证立即释放内存.当您使用最小范围时,GC将发挥最佳作用.

详细介绍这些内容的书籍(从用户的角度来看)是Effective Java 2和Implementation Patterns.

如果您想了解更多关于性能和VM内部的信息,您需要查看会谈或阅读Brian Goetz中的书籍.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读