You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
问题解决
在ResultSetWrapper中加入finalize方法,在回收前判断resultSet和statement有没有正常关闭,未关闭则处理
加入此处理后问题解决。 @OverRide
protected void finalize() {
try {
if (this.resultSet != null && !this.resultSet.isClosed()) {
LOG.warn("resultSet was not closed properly, forcing close via finalize");
this.resultSet.close();
}
} catch (SQLException e) {
throw new BackendException("Failed to close ResultSet", e);
} finally {
try {
if (this.statement != null && !this.statement.isClosed()) {
LOG.warn("statement was not closed properly, forcing close via finalize");
this.statement.close();
}
} catch (SQLException e) {
throw new BackendException("Failed to close Statement", e);
}
}
}
Bug Type (问题类型)
performance (性能下降)
Before submit
Environment (环境信息)
Expected & Actual behavior (期望与实际表现)
1、内存dump中mysql驱动实例呈线性增长趋势
2、gc回收后占用空间没有下降,直至内存溢出
在ResultSetWrapper中创建和close方法中分别加入日志,发现存在一定比例的ResultSetWrapper没有正常调用关闭方法。
在ResultSetWrapper中加入finalize方法,在回收前判断resultSet和statement有没有正常关闭,未关闭则处理
加入此处理后问题解决。
@OverRide
protected void finalize() {
try {
if (this.resultSet != null && !this.resultSet.isClosed()) {
LOG.warn("resultSet was not closed properly, forcing close via finalize");
this.resultSet.close();
}
} catch (SQLException e) {
throw new BackendException("Failed to close ResultSet", e);
} finally {
try {
if (this.statement != null && !this.statement.isClosed()) {
LOG.warn("statement was not closed properly, forcing close via finalize");
this.statement.close();
}
} catch (SQLException e) {
throw new BackendException("Failed to close Statement", e);
}
}
}
Vertex/Edge example (问题点 / 边数据举例)
Schema [VertexLabel, EdgeLabel, IndexLabel] (元数据结构)