为什么在尝试执行SAP Function时出现"超出GC开销限制"错误?

2020-09-15 16:36发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我正在尝试执行SAP功能。 但是...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在尝试执行SAP功能。 但是在执行此功能之前,我会收到此错误:

java.lang.OutOfMemoryError:超出GC开销限制

java.util.zip.InflaterInputStream。(InflaterInputStream.java:187)在

java.util.zip.ZipFile $ ZipFileInflaterInputStream。(ZipFile.java:393)at

位于

的java.util.zip.ZipFile.getInputStream(ZipFile.java:374)

java.util.jar.JarFile.getBytes(JarFile.java:424)在

java.util.jar.JarFile.getManifestFromReference(JarFile.java:193)在

java.util.jar.JarFile.getManifest(JarFile.java:180)在

sun.misc.URLClassPath $ JarLoader $ 2.getManifest(URLClassPath.java:944)在

java.net.URLClassLoader.defineClass(URLClassLoader.java:450),位于

java.net.URLClassLoader.access $ 100(URLClassLoader.java:73),位于

java.net.URLClassLoader $ 1.run(URLClassLoader.java:368)在

java.net.URLClassLoader $ 1.run(URLClassLoader.java:362)在

java.security.AccessController.doPrivileged(本机方法),位于

java.net.URLClassLoader.findClass(URLClassLoader.java:361)位于

java.lang.ClassLoader.loadClass(ClassLoader.java:424)在

java.lang.ClassLoader.loadClass(ClassLoader.java:357)在

com.sap.conn.rfc.engine.RfcImp.receiveCallStack(RfcImp.java:543)位于

com.sap.conn.rfc.engine.RfcGet.ab_rfcget(RfcGet.java:414)at

com.sap.conn.rfc.engine.RfcRcv.ab_rfcreceive(RfcRcv.java:36)at

com.sap.conn.rfc.engine.RfcIoOpenCntl.RfcReceive(RfcIoOpenCntl.java:2020 at

上的

com.sap.conn.rfc.engine.RfcIoOpenCntl.RfcCallReceive(RfcIoOpenCntl.java:2158)

com.sap.conn.jco.rt.MiddlewareJavaRfc $ JavaRfcClient.reset(MiddlewareJavaRfc.java:1465)位于

com.sap.conn.jco.rt.ClientConnection.internalReset(ClientConnection.java:521)at

com.sap.conn.jco.rt.PoolingFactory.releaseClient(PoolingFactory.java:677)位于

com.sap.conn.jco.rt.ConnectionManager.releaseClient(ConnectionManager.java:234)位于

com.sap.conn.jco.rt.Context.releaseConnection(Context.java:265)位于

com.sap.conn.jco.rt.RfcDestination.execute(RfcDestination.java:1503)在

com.sap.conn.jco.rt.RfcDestination.execute(RfcDestination.java:1469)在

com.sap.conn.jco.rt.AbapFunction.execute(AbapFunction.java:340)

2条回答
粗暴的香蕉
2020-09-15 17:14

亲爱的Partish,


通常,JCo库本身不会引起内存不足的问题。 由于JCo不负责将流程执行仅作为通信库进行分发,因此,性能/OOM问题不是JCo,而是应用程序。 知道了这个而不是应用程序会导致在其中执行JCo通信逻辑的OOM。 因此,需要找出该应用程序。 从跟踪可以看出,在这种情况下,JCo充当服务器。 但是,它是AS Java应用程序服务器还是独立的JCO服务器并不清楚。


情况如何:


1。 JCO服务器(AS Java)在GW上注册程序。
2。 ABAP调用应用程序中的功能模块,例如 AS Java。
3。 然后,应用程序执行逻辑(它将是RFC-> RFC服务器)并将数据发送回客户端。


仅基于此堆栈跟踪的根本原因无法确定。 我可以为您提供一些最佳做法:


如果JCo在Application Server Java中,请检查文件夹" \\ usr \ sap \ \ \ j2ee \ cluster \ server "中是否存在堆转储OOM.hprof和 根据KBA对其进行分析:1883568-如何使用MAT自我分析堆转储


如果没有堆转储,则可以根据KBA:2350640-如何获取堆转储,然后在KBA:1883568对其进行分析的同时,生成它。


如果这样做不能解决问题,您可以按照以下说明打开JCo跟踪来进行进一步操作(对于独立JCo而言):628962-如何打开SAP JCo跟踪(级别8跟踪就足够了 )。 打开跟踪之后,您可以重现问题并分析跟踪。 通过根据问题的时间戳进行搜索,最重要的信息将出现在JCO _


为了提高性能,请确保:


对于AS Java服务器,您使用的是AS Java核心组件的最新修补程序:1794179-为NetWeaver 7.1+导入AS Java Core补丁。对于独立的JCo服务器,请使用最新版本 JCo库:1077727-SAP JCo 3.0版本和支持策略。


最好的问候,
BarnabásPaksi

一周热门 更多>