在 GWT 版本中找到:
GWT - 2.4.0
在操作系统/浏览器上遇到:
带有 IE9 的 Windows 7
详细说明(请尽可能具体):
离开 GWT App 运行过夜后发生 Out Of Heap 异常,使用 MemoryAnalyzer 进行诊断,发现崩溃时有 160 万个 com.google.gwt.http.client.RequestBuilder 实例,每个大小正好为 1208 字节。
进一步检查向我显示这些请求是对服务器的 GWT Action 调用以轮询当前服务器的健康状态。com.google.gwt.user.client.Timer 每 1 秒轮询一次触发器
演示问题的最短代码段:
@Inject
public MainPresenter(final EventBus eventBus, final MyView view,
final MyProxy proxy, PlaceManager placeManager,
final DispatchAsync dispatcher) {
super(eventBus, view, proxy);
this.placeManager = placeManager;
this.dispatcher = dispatcher;
getView().setUiHandlers(this);
setupSeverHealthQuerier(dispatcher);
}
private void setupSeverHealthQuerier(final DispatchAsync dispatcher) {
int delayInSec = UserPreference.HealthCheckInterval;
serverHealthChecker = new Timer() {
@Override
public void run() {
dispatcher.execute(new GetServerHealth(ServerName.ReplayServerGTU),
new AsyncCallback<GetServerHealthResult>() {
@Override
public void onFailure(Throwable caught) {
caught.printStackTrace();
}
@Override
public void onSuccess(GetServerHealthResult result) {
getView().setServerHealthPic(result.getHealth());
}
});
}
};
serverHealthChecker.scheduleRepeating(delayInSec * 1000);
}
这是堆报告:
http://i.stack.imgur.com/C2qJy.png
- 感谢 10 名誉到发布图像规则