Java中的已使用和空闲内存

14 浏览
0 Comments

Java中的已使用和空闲内存

我正在尝试提高我的网页应用程序的性能,所以决定对其进行性能分析。
\n在进行此操作时,我注意到在长时间处理完成后,当我启动任务管理器时,发现java.exe占用了太多的内存。
\n顺便说一下,我是在处理完成后的2-3个小时后进行检查的,此时CPU处于稳定状态。
\n我在分析器的虚拟机基本视图中看到,已使用内存为5GB,可用内存为15GB,而在任务管理器中,java.exe使用的总内存为41GB
\n这个可用内存是什么意思?
\n这意味着现在Java将占用这么多内存吗?
\n我注意到随着进程的开始和运行,已使用内存和可用内存都在增长,但在处理完成后,已使用内存减少了,但可用内存没有减少。
\n我想知道是否我的应用程序有问题,还是这种情况正常?

0
0 Comments

使用Java时出现了“Used and free Memory in Java”问题。问题的原因是在启动服务器JVM时,默认情况下,最大堆大小设置为内存的1/4,但猜测您已将最大堆大小设置为40GB。JVM在启动时会保留这么多的虚拟内存,但内存直到应用程序使用它时才由操作系统分配给应用程序。这意味着您可以将最大堆大小设置为80GB,它将立即显示使用80GB的虚拟内存(即使是一个hello world程序),实际使用的内存可能要少得多。在您的情况下,堆大小已增长到20GB(应用程序使用),其中您正在使用5GB,而15GB未被使用。如果使用更多内存,堆大小可以增长到总共40GB。所以,即使在进程完成后,它也不会释放这些内存,这么多的内存也不需要释放吗?当JVM退出时,所有内存都会被释放。未使用的内存可以被交换到磁盘并重新使用主内存,但从性能角度来看,这通常是一个不好的主意。如果您使用了高达20GB的内存,您的Full GC时间是多少?顺便说一句:Azul JVM是我所知道的唯一将内存返回给操作系统的JVM。Full GC时间约为14分钟。这重要吗?这令人印象深刻。;)这取决于应用程序是否重要。我更习惯于尽量避免GC,即使它只需要毫秒级别的时间。我只是好奇而已。

0
0 Comments

在这篇文章中,我们将讨论Java中出现的"Used and free Memory in Java"问题的原因和解决方法。

根据上述对话,有人提出了一个问题,即Java程序消耗了大量的RAM,但是系统尚未进行性能分析。他们还表示,这是一个巨大的RAM数量,想知道这是什么类型的应用程序,它是用Java编写的,并且消耗了那么多的RAM。这表明问题的原因可能是代码库庞大或者在内存中存储了大量的对象。

另外,有人解释了工具的作用,即Java正在保留系统的RAM,但尚未将其分配给对象。这将是可用的RAM。使用的内存是代码库和内存中的对象所占用的内存。Java有时会保留当前未使用的RAM,并不将其释放给操作系统,以确保内存地址的连续性(防止内存碎片化)。

对于这个问题,解决方法可能是进行代码优化,以减少对RAM的消耗。此外,可以尝试手动释放不再使用的对象,以便Java的垃圾回收器能够更好地回收内存。

以下是一个可能的解决方案的示例代码:

// 尝试手动释放不再使用的对象
object1 = null;
object2 = null;
// 强制垃圾回收
System.gc();

这段代码将对象`object1`和`object2`设置为`null`,使它们成为不再被引用的对象。然后,通过调用`System.gc()`方法,强制Java的垃圾回收器立即运行,以回收不再使用的内存。

需要注意的是,强制垃圾回收并不总是推荐的做法,因为Java的垃圾回收器通常会在需要时自动进行回收。但在某些情况下,手动释放内存可能会有所帮助。

总结起来,当Java程序消耗大量RAM时,可能的原因是代码库庞大或在内存中存储了大量对象。解决方法包括代码优化和手动释放不再使用的对象。

0
0 Comments

从上述内容中,我们可以得出以下结论:

问题原因:问题的原因是由于Profiler通常只显示堆内存的使用情况,所以堆内存已经使用了5GB,剩余15GB可用。而任务管理器显示的是进程使用的总内存,包括堆内存和非堆内存(如Sun JVM中的“Perm Gen”内存)。

解决方法:可以参考上述链接中的资源,深入了解Java内存的使用情况。

根据以上内容,我们可以整理成以下文章:

《Java内存使用情况解析(SUN JVM)》

通常,Profiler显示的是堆内存的使用情况。因此,你的堆内存已经使用了5GB,剩余15GB可用。而任务管理器显示的是进程使用的总内存,包括堆内存和非堆内存,例如Sun JVM中的“Perm Gen”内存。

如果你想深入了解这个问题的原因以及解决方法,可以参考下面这篇文章,其中包含了很多相关资源。

Java Memory explained (SUN JVM)

希望以上内容对你有所帮助。

0