我有一个App Engine Java应用程序,可以在自动缩放的F1实例(600 Mhz,128 MB RAM)上运行。预热后,仪表板显示的每个实例的内存使用量保持在220 MB左右。根据{{3}},这包括"运行时开销"。
使用例如VisualVM的本地分析无法提供准确的图片,因为它包括开发服务器,数据存储区和内存缓存的内存版本等。总共,它总共添加了8,000个加载类(包括开发服务器) ,我自己的类,大约85个库),产生的permgen大小为50 MB,完全垃圾回收后最小堆大小为50 MB。
我的问题的一些背景:调度程序有时(通常在完成常规同步作业后的前几个请求期间)启动一个新实例来处理通常仅由一个实例处理的请求加载。在多次请求之后,所有请求将被完全一致地路由到第一个实例。基于docs概述的调度程序规则集,我试图弄清楚这种行为是否可能是由于调度程序预测(临时)缺少实例内存来处理其他请求。
答案 0 :(得分:0)
分析生产环境中的内存使用情况的最佳方法是什么?有没有办法在App Engine的运行时限制下执行堆转储?
没有好办法。仪器没有很好的支持。