程式報這個錯誤,生產上的,這個要怎樣才能定位到原因,找到出問題的代碼
java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.Arrays.copyOfRange(Arrays.java:3664)
at java.lang.String.<init>(String.java:207)
at java.nio.HeapCharBuffer.toString(HeapCharBuffer.java:567)
at java.nio.CharBuffer.toString(CharBuffer.java:1241)
at com.mysql.jdbc.StringUtils.toString(StringUtils.java:2195)
at com.mysql.jdbc.Field.getStringFromBytes(Field.java:635)
at com.mysql.jdbc.Field.getName(Field.java:554)
at com.mysql.jdbc.Field.getColumnLabel(Field.java:486)
at com.mysql.jdbc.ResultSetMetaData.getColumnLabel(ResultSetMetaData.java:224)
at com.alibaba.druid.filter.FilterChainImpl.resultSetMetaData_getColumnLabel(FilterChainImpl.java:4625)
at com.alibaba.druid.filter.FilterAdapter.resultSetMetaData_getColumnLabel(FilterAdapter.java:2778)
at com.alibaba.druid.filter.FilterChainImpl.resultSetMetaData_getColumnLabel(FilterChainImpl.java:4622)
at com.alibaba.druid.filter.FilterAdapter.resultSetMetaData_getColumnLabel(FilterAdapter.java:2778)
at com.alibaba.druid.filter.FilterChainImpl.resultSetMetaData_getColumnLabel(FilterChainImpl.java:4622)
at com.alibaba.druid.filter.FilterAdapter.resultSetMetaData_getColumnLabel(FilterAdapter.java:2778)
at com.alibaba.druid.filter.FilterChainImpl.resultSetMetaData_getColumnLabel(FilterChainImpl.java:4622)
at com.alibaba.druid.proxy.jdbc.ResultSetMetaDataProxyImpl.getColumnLabel(ResultSetMetaDataProxyImpl.java:107)
at org.apache.ibatis.executor.resultset.ResultSetWrapper.<init>(ResultSetWrapper.java:59)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getFirstResultSet(DefaultResultSetHandler.java:239)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:176)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:64)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79)
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83)
at sun.reflect.GeneratedMethodAccessor73.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49)
at com.github.pagehelper.SqlUtil._processPage(SqlUtil.java:351)
uj5u.com熱心網友回復:
是不是你從資料庫回傳的資料量太大了,沒有做分頁導致的?如果從代碼判斷不了原因,可以將堆dump出來,看下堆里面現在什么物件最多。
一般發生了oom,會產生hprof檔案,你拿出來用工具分析下
uj5u.com熱心網友回復:
查詢資料量過大導致記憶體溢位了。分頁查轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/29503.html
標籤:Java EE
下一篇:怎么實作 按步驟串行執行
