Java 对象创建会影响应用程序性能吗

Java 对象创建会影响应用程序性能吗,java,multithreading,jvm,Java,Multithreading,Jvm,我试图解决应用程序的性能问题。GC repots说(可在下面的链接中找到)对象创建速率太高,但我看到在运行20分钟后,GC进程并不是很糟糕,所以如果GC没有长时间运行,对象创建在这里有什么意义呢。在做了一些微基准测试之后,我注意到很少的代码部分(没有数据库调用,只在内存计算中)在处理100个用户负载时需要大约2分钟,但在单用户负载运行时需要2秒钟。我怀疑可能存在线程争用问题,因为有20个后台线程正在运行(不包括tomcat线程池)。对象创建率可能是根本原因吗?(如以下链接所述) 您的GC日志肯定

我试图解决应用程序的性能问题。GC repots说(可在下面的链接中找到)对象创建速率太高,但我看到在运行20分钟后,GC进程并不是很糟糕,所以如果GC没有长时间运行,对象创建在这里有什么意义呢。在做了一些微基准测试之后,我注意到很少的代码部分(没有数据库调用,只在内存计算中)在处理100个用户负载时需要大约2分钟,但在单用户负载运行时需要2秒钟。我怀疑可能存在线程争用问题,因为有20个后台线程正在运行(不包括tomcat线程池)。对象创建率可能是根本原因吗?(如以下链接所述)


您的GC日志肯定显示了一些内存问题。重点是:

Minor GC count  352
Minor GC reclaimed  534.76 gb
Minor GC total time 1 min 40 sec 680 ms
Minor GC avg time   286 ms
Minor GC avg time std dev   272 ms
Minor GC min/max time   10 ms / 970 ms
Minor GC Interval avg   3 sec 334 ms 
根据这些指标,您的应用程序每3.5秒生成1.5 Gb的垃圾。

如果你没有做特别的内存密集型任务(如金融模拟),那么这是一个巨大的数字,必须进行调查


我建议使用可以进行内存分析的调试器工具。JProfiler肯定会完成这项工作,但也许只需使用JVisualVM(已经作为jdk的一部分安装在您的机器上),您就可以跟踪分配了这么多内存的内容。

报告的链接不再起作用,我想您可能需要自己将文件托管在某个地方?不管怎么说,你的问题没什么可说的。@millimoose谢谢,yea注意到了。现在应该没事了