应用程序正在具有 16 GB RAM 和 100 GB 硬盘的高端 Linux 服务器上运行。我们有以下命令来运行该程序。
nohup java -server -Xmn512m -Xms1024m -Xmx1024m -Xss256k -verbose:gc -Xloggc:/logs/gc_log.txt MyClass >> /output.txt
这是由其他人编写的,我试图理解为什么使用 -verbose:gc -Xloggc: 。 当我检查此命令时,它会收集 gc 日志,但是这是否会导致应用程序出现性能问题? 另外,我想重新审视我的内存参数,应用程序使用完整的 16 GB RAM,CPU 利用率不到 5%。我们正在分析内存利用率的原因。 但是我们是否可以增加内存参数值以获得更好的性能,或者现有的就足够了?
最佳答案
问题第一部分的答案是 -verbose:gc 意味着更多 GC 日志将附加到 -Xloggc 中提供的文件中。如果 CPU 使用率 <5%,则将 gc 日志保留为详细日志没有问题。
对于第二部分,如果您分配 1024m 的堆并且应用程序仍然占用 16GB RAM,这是不可能的。
关于java - 堆内存分配和性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14055865/