北京品牌网站北京学生聚集
web/
2025/10/3 6:41:05/
文章来源:
北京品牌网站,北京学生聚集,石家庄网络公司哪家正规,文案短句干净治愈java内存泄漏和内存溢出总览 术语“内存泄漏”在Java中的使用方式不同于在其他语言中使用的方式。 通用术语中的“内存泄漏”是什么意思#xff0c;在Java中如何使用#xff1f; 维基百科的定义 当计算机程序消耗内存但无法将其释放回操作系统时#xff0c;就会发生计算机科… java内存泄漏和内存溢出 总览 术语“内存泄漏”在Java中的使用方式不同于在其他语言中使用的方式。 通用术语中的“内存泄漏”是什么意思在Java中如何使用 维基百科的定义 当计算机程序消耗内存但无法将其释放回操作系统时就会发生计算机科学中的内存泄漏在此情况下为泄漏。 JVM在启动时将堆保留为虚拟内存并且直到退出后才将其归还。 该虚拟内存在使用时会变成主内存。 这就是为什么JVM的虚拟大小和驻留大小可能非常不同并且驻留内存可以在不更改虚拟内存的情况下增长的原因。 在面向对象的编程中当对象存储在内存中但无法被运行的代码访问时就会发生内存泄漏。 GC总是可以找到堆上的每个对象甚至是应用程序无法访问的对象。 这样就没有运行代码无法达到的对象。 但是许多人将内存使用中的任何不必要的增加都称为内存泄漏尽管从技术角度来看这并不是严格准确的。 在Java中没有完整的GC就无法确定所需的内存量。 看到Java应用程序锯齿状的“已用”内存是正常的。 在每个GC之后返回相同的内存量表示所需的内存没有增加。 内存泄漏会通过减少可用内存量来降低计算机的性能。 最终在最坏的情况下可能会分配过多的可用内存并且系统或设备的全部或部分停止正常工作应用程序出现故障或者系统由于崩溃而无法正常运行。 这就是在Java中使用该术语的方式。 结论是可用内存减少了这是内存泄漏。 但这真的是内存泄漏吗 Java中的“内存泄漏”示例 最近在StackOverflow上提出了两个问题这些问题说明了Java中“内存泄漏”的含义的各种观点。 Go是否会像Java一样受到微妙的内存泄漏 在Java中创建内存泄漏 在第一篇文章中有一种观点表示“内存泄漏”是指应用程序持有对不再需要的对象的引用。 另一种观点认为JVM本身没有内存泄漏。 在第二篇文章中有许多示例说明了如何使用JVM来隐藏内存使用情况或消耗内存的操作。 示例包括File.deleteOnExit创建大的静态字段废弃的套接字文件句柄线程不需要的JDBC连接。 退出时File.deleteOnExit必须使用一些内存才能执行其任务。 这不是我选择的泄漏因为它没有保留不需要的内存。 拥有不需要的静态字段和线程会浪费内存这是JVM无法纠正的错误。 但是创建JVM确实处理的套接字文件句柄和JDBC连接。 调用finalize方法时将清理这些资源。 结论 在Java中将保留且不再需要的对象称为“内存泄漏”是有意义的。 Java语言中没有什么容易出现此问题的并且JRE库确实可以保护自己免受应用程序代码中的错误的侵害。 您的应用程序仍然可能存在内存泄漏您需要对何时仍需要资源特别是线程做出明智的选择如果您坚持太长时间则可能意味着“内存泄漏”。 参考 Vanilla Java博客上来自我们JCG合作伙伴 Peter Lawrey的 Java和内存泄漏 。 相关文章 Java中的低GC使用原语而不是包装器 Erlang与Java内存架构 JVM如何处理锁 JVM选项-client vs -server 翻译自: https://www.javacodegeeks.com/2011/07/java-and-memory-leaks.htmljava内存泄漏和内存溢出
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86070.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!