on 2025 Apr 16 9:15 PM - last edited 3 weeks ago
I've got an XSLT transformation (not ST) which converts a big ABAP internal table into XML (serialization). It did a short dump SYSTEM_NO_ROLL due to something like 4 GB memory needed.
Here's the memory consumption in the short dump:
I can reproduce the issue in my DEV system with a small test program with dummy data:
I can solve the issue by creating an equivalent ST transformation, which is consuming less memory (below), and is also 10 times faster.
If I reduce the volume, XSLT is successful, but I see that it's consuming the HEAP memory (which I guess is bad),
while ST is not consuming it.
My question is, I'd like to understand why the Heap memory is consumed by XSLT although the total memory is not so much solicited (284 MB + 631 MB) and there's no other activity in the system, so I'm interested by any information.
EDIT: more information added below.
Initial screen of RSMEMORY:
SM50:
Here's an animated GIF of maximum memory consumption by XSLT (+ its source and target data) for around 50 seconds, going from second 52 to second 42, the heap memory is immediately used:
Here's an animated GIF of maximum memory consumption by ST (+ its source and target data) for around 40 seconds, from second 36 to second 16, the heap memory is immediately used too:
Here's the source code of ABAP and transformations: sandraros/test-xslt-memory (installation via abapGit/abapGit: Git client for ABAP).
Thank you.
Sandra
System: ABAP 7.40 SP 23; Kernel 753 PL 1300.
NB: I guess that Heap is bad because the workprocess becomes PRIV, so it cannot be reused by other ABAP tasks, and it's especially a problem if the program is running in a DIA workprocess. I don't know for BGD workprocess (my case).
NB: for generating the XSLT short dump, the internal table contains more than 260.000 lines, 20 fields of total 1032 bytes, including characters (Unicode 2 bytes), packed, NUMC, dates, no references, and two nested internal tables, the first one containing 1 line (always) and having 4 fields of total 186 bytes, the second one containing 1 line (always) having 20 fields of total 616 bytes including one nested internal table containing 1 line (always) having 4 fields of total 36 bytes. Via the ST transformation, the generated XML file is 413 MB.
Request clarification before answering.
Hi Sandra,
I think it has to do with the following as described in the help for simple transformation -
In the help reference to XSLT in the same link it displays a diagram showing the asXML intermediate format when XSLT is used along with a basic description of the processing, which I would assume would account for additional memory usage (both links included below).
Regards,
Ryan Crosby
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hello,
did you try this?
Kind regards
Jan
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
70 | |
21 | |
9 | |
7 | |
6 | |
6 | |
5 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.