获取Java进程分配的总内存(不带探查器)?

获取Java进程分配的总内存(不带探查器)?,java,profiler,jprofiler,hprof,Java,Profiler,Jprofiler,Hprof,是否有JVM选项可以打印出运行期间分配的总内存,而无需运行插入指令的探查器 我当然不是Java内存分配器工作原理方面的专家,但可以肯定的是,在几乎没有开销的情况下跟踪分配的总字节数应该是可能的 我不能在profiler中运行,因为这个应用程序需要每秒处理数万条消息,在高峰时还要处理好几个小时;探查器的开销将使其不可行 谢谢,这里没有这样的JVM选项 您可以启用GC日志记录,并尝试从空间大小推断内存分配统计信息。但这只会在GC运行时报告。。。不是在应用程序开始和结束时 我只是想知道为什么没有JVM

是否有JVM选项可以打印出运行期间分配的总内存,而无需运行插入指令的探查器

我当然不是Java内存分配器工作原理方面的专家,但可以肯定的是,在几乎没有开销的情况下跟踪分配的总字节数应该是可能的

我不能在profiler中运行,因为这个应用程序需要每秒处理数万条消息,在高峰时还要处理好几个小时;探查器的开销将使其不可行


谢谢,这里没有这样的JVM选项

您可以启用GC日志记录,并尝试从空间大小推断内存分配统计信息。但这只会在GC运行时报告。。。不是在应用程序开始和结束时

我只是想知道为什么没有JVM选项


坦率地说,因为这没有用。知道在运行期间分配了多少内存并不能帮助您了解如何优化应用程序。

为什么您认为这些信息会有用?大约每天12小时,此应用程序需要以非常低的延迟运行。这是一个有用的信息,因为它可以帮助我决定是否需要大量减少内存使用,使用对象池等等。。。减少GC的数量,或者我是否可以拥有一个巨大的堆,在工作时间完全避免GC。仅仅知道分配了多少内存并不能回答这些问题。我觉得这根本没用。你真的需要使用内存分析器。。。不管你怎么说。如有必要,请使用从生产中获取的消息设置测试服务器和配置文件。谢谢。。。是的,有几个这样的选择。。。基本上,我认为我可以将newgen设置为非常小的值,然后解析GC输出。。答案将精确到新一代的大小,这在我的情况下是完全可以接受的。我只是想知道为什么没有JVM选项。