java - 堆内存分配和性能

标签 java performance memory-management server-administration

应用程序正在具有 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/

相关文章:

java桌面jar应用程序自动更新机制

java - 如何将 JAR 添加到我正在开发的 Eclipse 插件中?

performance - 高效动态地在内存中对多个用户进行排名?

php - $_GLOBAL 、 $_POST 等全局变量存储在哪里?

javascript - 在 Javascript 中存储 JSON 响应的大小

java - Hibernate-Search flushToIndexes 导致 java.lang.OutOfMemoryError(堆空间)

java - 将 Kotlin Parcelable Data Class 放入 java 包中不起作用

jquery - jQuery has() 和 filter() 方法有什么区别?

python - PySerial 从 Arduino 读取时速度变慢

c++ - 是否可以在其范围之外访问局部变量的内存?