一个示例测试java代码,可以演示堆中的内存碎片

时间:2014-06-20 15:42:19

标签: java heap-memory memory-fragmentation heap-fragmentation

我想通过在java用户空间中编写一些不良代码来了解内存碎片是如何发生的。

请指出一些可以帮助我理解这一点的想法。

据我所知,我认为,java堆碎片只能因垃圾收集错误而发生,但我的一些朋友却反其道而行之。

我只是想了解Java Heap碎片也可以通过编写糟糕的java代码应用程序来实现。

注意:我正在寻找可以证明这一论点的代码片段。


更新

实际上我们在嵌入式设备中使用的jvm是java 1.3。

谢谢,

1 个答案:

答案 0 :(得分:0)

首先,垃圾收集器是特定于JVM的。我只知道OpenJRE和Sun JRE。在那里使用的垃圾收集器在收集期间压缩堆,因此由于内存管理的设计,堆碎片可以 NOT 发生。

用于内存管理的其他算法(过去经常使用)使用空闲列表并且不会在堆中移动内存。对于这样的管理方案,堆碎片可能是一个问题。