相关疑难解决方法(0)

解释Azul的"无动作"垃圾收集器

我刚看过这个:

http://www.artima.com/lejava/articles/azul_pauseless_gc.html

虽然我对编译器有一些经验,但我没有做任何与垃圾收集有关的事情; 对我来说是一个很大的黑盒子.

我一直在努力理解文章中提到的问题.我理解这个问题(执行大多数垃圾收集器时有一个暂停),我知道他们声称他们的实现没有那个问题.但我不明白为什么/如何在第一时间发生问题(似乎在原始文本中可以理解这一点),因此我不明白为什么他们的解决方案可能会起作用.

有人可以向我解释一下:

  1. 为什么垃圾收集者一般会暂停
  2. 为什么Azul的gc没有这个问题?

当以图形方式解释时,我倾向于更好地理解这种事情 - 可能用代码编辑器完成的小内存模式就足够了.

谢谢!

garbage-collection

41
推荐指数
3
解决办法
7667
查看次数

需要一个有效的Map或Set,在添加和删除时不会产生任何垃圾

因为Javolution不起作用(见这里),我非常需要一个高效的Java Map实现,并且在简单的使用下不会产生垃圾.java.util.Map在添加和删除密钥时会产生垃圾.我检查了Trove和Guava,但它看起来没有Set <E>实现.我在哪里可以找到一个简单而有效的替代方案java.util.Map

编辑EJP:

添加条目时会分配一个条目对象,并在删除它时将其释放到GC.:(

   void addEntry(int hash, K key, V value, int bucketIndex) {
        Entry<K,V> e = table[bucketIndex];
        table[bucketIndex] = new Entry<K,V>(hash, key, value, e);
        if (size++ >= threshold)
            resize(2 * table.length);
    }
Run Code Online (Sandbox Code Playgroud)

java trove4j guava data-structures javolution

2
推荐指数
1
解决办法
900
查看次数