为什么Java中没有gc发生的内存区域?

时间:2017-06-21 13:28:38

标签: java garbage-collection jvm

在我们的许多现代应用程序中,使用缓存来提高应用程序的性能。现在,此缓存可能具有某些GB的大小。 但是,将此缓存与当前JVM一起使用可能会因GC循环而导致严重的性能问题。

所以我的问题是为什么java没有提供一种简单的方法来在堆内部使用一些空间来实现GC。

有一些关于堆存储形式的解决方案,但它有自己的缺点,例如对象的ser / der。

是否有任何特殊原因不提供这个空间。 或者我在这里问一些非常错误的东西。

1 个答案:

答案 0 :(得分:0)

你可能在谈论sun.misc.Unsafe

此功能实际上允许您将Java代码编写到您想象的方向。重要的是,在灰色地带多年后,作为Java9的正式部分。

但要回答你的直接问题:你认为这应该如何运作?你不能拥有蛋糕,而不是同时拥有蛋糕。

当您将内存区域留给JVM进行托管时,JVM 必须进行垃圾回收。如果某些记忆区域中的某些东西变得合法收藏,它就需要消失。

换句话说:如果您希望JVM不接触某个内存区域 - 那么负担应该在您身上 - 因为现在您的应用程序必须自行管理。应用程序必须将“放置”到该区域中,并且必须确保在必要时将其丢弃。