Memory leaks in C++(OCCI ) for OTT generated C++ mapping objects with Oracl
Our application is in C++ which interfaces with Oracle 10g database using OCCI. The mapping objects are created using OTT. The type of these mappisng objects in PersistentObject. Our development machine(Solaris 8) and database machine are different. So we have installed the "instantclient-basiclite-solaris6432-10.2.0.3-20070101.zip" to use OTT and OCCI on development machine. We are running purify in our application, Purify is reporting memory leaks on these OTT generated POObjects (type used is transient Objects), despite the fact that we are deleting these objects appropriately. .
Since OTT generated code uses the STL data structures vector list etc.
STL are not standard across platforms and hence you can ignore these warnings.
Similar Messages
-
Allocated memory pool was not deleted! 1 GB memory leak is too much for me!
Dear Sirs. I found that DB environment, that was configured to use 1 GB cache size, won't free it when closed! Why? First I tried to open and close environment and got the following:
Detected memory leaks!
Dumping objects ->
{596} normal block at 0x01970040, 1048596 bytes long.
Data: < > 14 00 10 00 DB DB DB DB 0B 00 10 00 01 00 00 00
{578} normal block at 0x00397978, 464 bytes long.
Data: < > D0 01 00 00 DB DB DB DB C7 01 00 00 01 00 00 00
Object dump complete.
I have and idea that BDB will reuse the memory, rite? OK, let's try to create the same environment and open it. After environment was opened, closed, opened again and again closed, I got the following:
Detected memory leaks!
Dumping objects ->
{3663} normal block at 0x01B80040, 1048596 bytes long.
Data: < > 14 00 10 00 DB DB DB DB 0B 00 10 00 01 00 00 00
{3645} normal block at 0x00396E60, 464 bytes long.
Data: < > D0 01 00 00 DB DB DB DB C7 01 00 00 01 00 00 00
{596} normal block at 0x01970040, 1048596 bytes long.
Data: < > 14 00 10 00 DB DB DB DB 0B 00 10 00 01 00 00 00
{578} normal block at 0x00397978, 464 bytes long.
Data: < > D0 01 00 00 DB DB DB DB C7 01 00 00 01 00 00 00
Object dump complete.
So memory was not reused, nor deallocated.
By the way, you may be interested in other leak I found, but fixed, see
Replication manager memory leak when setting local site information.
This leak is more serious, I am not sure I will fix it quickly. Maybe I'm doing something wrong? Could you please suggest something?
Thanks in advance!
With regards,
Vladislav.OK, the problem solved by fixing code in file 'log.c', method '__log_dbenv_refresh'.
Just added the code that deallocates memory of bulk buffer.
if (IS_ENV_REPLICATED(dbenv))
if (lp->bulk_buf != INVALID_ROFF)
__db_shalloc_free(&dblp->reginfo, lp->bulk_buf);
lp->bulk_buf = INVALID_ROFF;
lp->bulk_len = 0;
lp->bulk_off = 0;
It was allocated in the '__log_open' function, by the following code:
lp->ready_lsn = lp->lsn;
if (IS_ENV_REPLICATED(dbenv)) {
if ((ret = __db_shalloc(&dblp->reginfo, MEGABYTE, 0,
&bulk)) != 0)
goto err;
lp->bulk_buf = R_OFFSET(&dblp->reginfo, bulk);
lp->bulk_len = MEGABYTE;
lp->bulk_off = 0;
} else {
lp->bulk_buf = INVALID_ROFF;
lp->bulk_len = 0;
lp->bulk_off = 0;
Sorry for time taken to read my posts, I was really needy in quick help, but solved problems myself. -
SQL Developer 3.0.04 generated scripts not compatible with Oracle 10g (XE)
HI,
I tried to do an export from one XE database (still 10g) to another XE database. (also 10g).
I tried to do a database copy as well as a separate export and import (by loading the file and running as a script).
Neither of them work without modifying the files as it seems that SQL Developer generates scripts that are only compatible with Oracle 11g.
- Create table contains "segment creation automatic"
- Storage clauses contain parts that are not compatible with 10g
I ran through the wizard several times but neither can I find an option to choose for compatibility with earlier versions of Oracle.
Checked the preferences screen as well.
Is this a well hidden option or is it not possible to make this work for 10g.
Extra : found workaround by removing the storage clause to the export. Is there another way that does not force me to remove the storage clause?
Edited by: kcaluwae on 24-jun-2011 6:03I'm sure this is far from the supported way to fix this but, seeing that it's apparently an issue with the classpath or something in it, I hacked <sqldeveloper_install>\sqldeveloper\bin\sqldeveloper.bat and added [ORACLE_HOME]\jdbc\lib\ojdbc6.jar to the classpath. At least that gets me started with 3.0 and lets me create TNS connections.
I'd really appreciate a better solution, if any of you kind folks knows of something.
Thanks,
Kelly -
How can I generate a map file with LabVIEW?
We wish to use a product which inserts code into our executable to prevent tampering with it by crackers. The program, however, takes the executable file, as well as the map file (which is commonly generated by c++ compilers) and uses the map file to determine where in the exe the critical routines that need protection are at. I can not, however, determine how to create such a map file for a LabVIEW generated executable. Is there a special build option I need to invoke?
Yes, I'm familar with NI's licensing technology, having talked with someone (you, Dennis, I believe) about it before. The problem we have is our software is sold to factories in China where there are no internet connections. We have a physical key 'dongle' which must be present in order for the executable to be willing to run. However, it appears that people are taking the executable which LabVIEW creates and they are editing it, probably by using a a debugger and tracing to the the code which checks for the dongles presence and bypassing it. To my knoweledge, NI's products don't do anything to prevent this, right?
We found a company which sells a product that encryptes, checksums, etc... an executable file, but it needs to know the layout of functions in the exe in order to determine which areas to focus the obfuscation on. They were sort of matter of fact when they said it needs the exe and the map file, as if they expected any language which produced an exe could produce a map file. -
Hi ,
I am working in Solaris 9 x86, with Oracle installed on it.I am getting memory leaks reported in occi library.
Machine Details:
Hostname: ALEXANDER
Hostid: 2ed11ae9
Release: 5.9
Kernel architecture: i86pc
Application architecture: i386
Hardware provider:
Domain:
Kernel version: SunOS 5.9 Generic 112234-10 Nov 2003
Database Version :
Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options
Compiler Version:
CC: Sun C++ 5.5 Patch 113819-09 2004/08/03.
Compiler arguments:
CC -w -g Main.cpp -I$ORACLE_INCLUDE -o Main -lclntsh -locci
I started with the demo apps for occi that comes with Oracle.
After running the executables and checking with the bcheck utility I receive the errors due to memory leak.
bcheck -all ./Main
Actual leaks report (actual leaks: 2 total size: 43 bytes)
<rtc> Memory Leak (mel):
Found leaked block of size 31 bytes at address 0x812d6f8
At time of allocation, the call stack was:
[1] operator new() at 0xd7906718
[2] operator new[]() at 0xd7905ab8
[3] oracle::occi::StatementImpl::do_setSQL() at 0xda13e681
[4] oracle::occi::StatementImpl::StatementImpl() at 0xda13e1bf
[5] oracle::occi::ConnectionImpl::createStatement() at 0xda136863
[6] occidml::executeSelectStatement() at line 46 in "Main.h"
[7] main() at line 12 in "Main.cpp"
<rtc> Memory Leak (mel):
Found leaked block of size 12 bytes at address 0x8084c40
At time of allocation, the call stack was:
[1] operator new() at 0xd7906718
[2] std::vector<OCIParam*,std::allocator<OCIParam*> >::__insert_aux() at 0xda145c19
[3] std::vector<OCIParam*,std::allocator<OCIParam*> >::resize() at 0xda145443
[4] oracle::occi::StatementImpl::initParamVec() at 0xda144e70
[5] oracle::occi::ResultSetImpl::next() at 0xda146404
[6] main() at line 15 in "Main.cpp"
If any body needs more info , pls send me your email address so that I can send my source files.can you post this in the OCCI forum?
-
Detect memory leak in JNI so files for linux and Solaris
I have to find the memory leaks in the JNI for solaris and linux but the issue is
i need to find the leaks in the so files.I have solved the issues of leaks using Purify
on windows but not getting appropriate support for linux. Any pointers to tools will help.I tried Valgrind on linux but it is not giving me the exact location of leak as in purify and also the support for purify is for 32 bit only.Valgrind is not showing any functions in .so files.JNI is not supported in Purify for Solaris? Please Help.amol28 wrote:
I have to find the memory leaks in the JNI for solaris and linux but the issue is
i need to find the leaks in the so files.I have solved the issues of leaks using Purify
on windows but not getting appropriate support for linux. Any pointers to tools will help.I tried Valgrind on linux but it is not giving me the exact location of leak as in purify and also the support for purify is for 32 bit only.Valgrind is not showing any functions in .so files.JNI is not supported in Purify for Solaris? Please Help.If you have written the JNI, the JNI itself (java calls, methods, etc) to be OS agnostic then it shouldn't matter. In that case you check the windows code (not jni), the linux code (not jni) and the jni code itself independent of each other.
If you haven't made the JNI OS agnostic the question would be why not? -
Memory Leak with JDialog in Java 1.4.2_07
Hello!
All books I have read say to close a JDialog, it is enough to call the Method "dispose". Now I have written my first applikation an with every Dialog I open, the Software needs more RAM. With every Dialog I open, my software needs 1,5 MB RAM.
I can`t reuse the Dialogs, because the user needs to look at view at the same time
The Question is, how to close a JDialog correct that the GC can clean all Objects in RAM.
Here are my Example Programm where you can view the differences. I tryed a view things out. With every Dialog the software needs xxx kb of RAM (its only a little example).
Look at the Task Manager to look the real RAM needage.
Thanks for Help
Rainer
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
public class TestRAMUsage extends JFrame {
private JPanel jContentPane = null;
private JMenuBar jJMenuBar = null;
private JMenu fileMenu = null;
private JMenuItem exitMenuItem = null;
private JButton jB_showandclose_normal = null;
private JButton jB_showandclose_advanced = null;
* This method initializes jB_showandclose_normal
* @return javax.swing.JButton
private JButton getJB_showandclose_normal() {
if (jB_showandclose_normal == null) {
jB_showandclose_normal = new JButton();
jB_showandclose_normal.setBounds(new java.awt.Rectangle(43,30,214,18));
jB_showandclose_normal.setText("open/close Dialog normal x 50");
jB_showandclose_normal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
for (int i = 0; i < 50; i++) {
TestDialog td = new TestDialog();
td.show();
td.close_normal();
System.gc();
return jB_showandclose_normal;
* This method initializes jB_showandclose_advanced
* @return javax.swing.JButton
private JButton getJB_showandclose_advanced() {
if (jB_showandclose_advanced == null) {
jB_showandclose_advanced = new JButton();
jB_showandclose_advanced.setBounds(new java.awt.Rectangle(16,76,260,18));
jB_showandclose_advanced.setText("open/close Dialog advanced x 50");
jB_showandclose_advanced.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
for (int i = 0; i < 50; i++) {
TestDialog td = new TestDialog();
td.show();
td.close_advanced();
System.gc();
return jB_showandclose_advanced;
* @param args
public static void main(String[] args) {
// TODO Auto-generated method stub
TestRAMUsage application = new TestRAMUsage();
application.show();
* This is the default constructor
public TestRAMUsage() {
super();
initialize();
* This method initializes this
* @return void
private void initialize() {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setJMenuBar(getJJMenuBar());
this.setSize(300, 200);
this.setContentPane(getJContentPane());
this.setTitle("Application");
* This method initializes jContentPane
* @return javax.swing.JPanel
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJB_showandclose_normal(), null);
jContentPane.add(getJB_showandclose_advanced(), null);
return jContentPane;
* This method initializes jJMenuBar
* @return javax.swing.JMenuBar
private JMenuBar getJJMenuBar() {
if (jJMenuBar == null) {
jJMenuBar = new JMenuBar();
jJMenuBar.add(getFileMenu());
return jJMenuBar;
* This method initializes jMenu
* @return javax.swing.JMenu
private JMenu getFileMenu() {
if (fileMenu == null) {
fileMenu = new JMenu();
fileMenu.setText("File");
fileMenu.add(getExitMenuItem());
return fileMenu;
* This method initializes jMenuItem
* @return javax.swing.JMenuItem
private JMenuItem getExitMenuItem() {
if (exitMenuItem == null) {
exitMenuItem = new JMenuItem();
exitMenuItem.setText("Exit");
exitMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
return exitMenuItem;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class TestDialog extends JDialog {
private static final long serialVersionUID = -4326706771573368209L;
private JPanel jContentPane = null;
private JButton jB_drucken = null;
private JTextField jTF_hallo = null;
private JButton jB_close = null;
* This is the default constructor
public TestDialog() {
super();
initialize();
* This method initializes this
* @return void
private void initialize() {
this.setSize(541, 255);
this.setTitle("Speicher Dialog");
this.setContentPane(getJContentPane());
* This method initializes jContentPane
* @return javax.swing.JPanel
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJB_drucken(), null);
jContentPane.add(getJTF_hallo(), null);
jContentPane.add(getJB_close(), null);
return jContentPane;
* This method initializes jB_drucken
* @return javax.swing.JButton
private JButton getJB_drucken() {
if (jB_drucken == null) {
jB_drucken = new JButton();
jB_drucken.setBounds(new java.awt.Rectangle(45, 88, 211, 19));
jB_drucken.setText("Sag Hallo Welt");
return jB_drucken;
* This method initializes jTF_hallo
* @return javax.swing.JTextField
private JTextField getJTF_hallo() {
if (jTF_hallo == null) {
jTF_hallo = new JTextField();
jTF_hallo.setBounds(new java.awt.Rectangle(269, 88, 228, 19));
return jTF_hallo;
* This method initializes jB_close
* @return javax.swing.JButton
private JButton getJB_close() {
if (jB_close == null) {
jB_close = new JButton();
jB_close.setBounds(new java.awt.Rectangle(196, 179, 109, 22));
jB_close.setText("Schlie�en");
jB_close.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
try {
// setVisible(false);
dispose();
removeAll();
// getContentPane().removeAll();
// finalize();
} catch (Throwable e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
return jB_close;
* Dispose the Dialog
public void close_normal() {
dispose();
* Set all Variables to null
* Remove all Container
* dispose the Dialog
* and finalize it!
public void close_advanced() {
// System.out.println(this.);
dispose();
// show();
jContentPane = null;
jB_drucken = null;
jTF_hallo = null;
jB_close = null;
getContentPane().removeAll();
removeAll();
try {
finalize();
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // @jve:decl-index=0:visual-constraint="10,10"I have use Methods in some Software Produkts. But if your Software
use 30 MB in RAM the Runtime classes say 12 MB used. I don`t think
that this works hereThe 12 MB is the memory used of the available 30 MB memory available. Once the VM get its memory from the OS, it does not have to return the memory back to the OS right away.
By calling System.gc() does nt guarentee the garbage collector to be activated right away. you are just asking the garbage collector to run when it get a chance. Since the emeory is not near the max memory available...the gc is likely not going to run. Futhermore, if your application is running..the gc is likely wont run, unless memory is needed when you reach the max limit.
because the user want to view at more than one Dialog at the same
timeunderstandable..i just hope the 50 dialogs is just for testing the memory. i can't imagine any user would want to open 50 dialog at the same time =)
And the other is, that the Variables in the Dialog class wouldn`t clean
in RAM (that was the reason to set all to null!)why would it not be? When you dispose the dialog, the object will be null out..so when the garbage collector kick in, it will reclaim the memory. Now, if you have references to object in the dialog, that reference will be null out as well..the object may still exist (by having another live object having a reference to it)...the garbage collector would reclaim the dialog memory..but not the "live" object that the dialog has reference to.
I ran the application..testing both button.
The top button..there were little memory consumption..the second button consume a little memory bit-by-bit. I see no memory leak here. What happens is you called GC() 50 times..but it will only run one time when it get a chance...by nulling out the variables, and calling finalize()..it actually slow down the garbage collecting...that's why you should not even obther with having those two method. Furthermore, finalize method may not even be called.
Memory leak occurs when you have a reference from an object still hanging around, but that object is no longer needed. This is a design issue.
example
public class A{
Item item = new Item();
public void getItem(){ return item; };
public class B{
Item item;
public B(A a){
item = a.getItem();
A a = new A();
B b = new B(a);
a = null;when a is null out..the item reference is null, but the actual object still exist and 'b' has a reference to it. so by nulling out those object does not mean you just got rid of the object. it's better to let the object scope run out..and the garbage collector to collect it.. When you null out the object, you could accidentally null out an object that some other object may be using. -
Memory leak in Skype 7.4.0.102 on Win 7 x64
Ever since upgrading to the latest version of Skype on my Win 7 x64 box, I've had nothing but issues with Skype having a huge memory leak. It'll start out running fine when I boot up, hovering around 141K of memory usage (even though I think that's still higher than it should be), but after leaving it open for a while, it will just continue to creep up. Yesterday I had to kill the Skype.exe*32 process from Task Manager because it was up to 1.2 GB of memory usage.
Previously it had not gotten that high, but I have seen it as high as almost half a gig. I've tried all the usual stuff, removing and reinstalling, making sure I'm running the latest version, etc. The memory leak is still there. Has anyone experienced this issue with 7.4.0.102? If so, has anyone found any resolution?http://community.skype.com/t5/Windows-desktop-client/7-3-0-101-CPU-overload/td-p/3950990
-
Possible Memory Leak in WLS6.1-SP2
Hello,
I need your help in getting to the bottom of a memory issue we are facing.
We are running EJB based applications on Web Logic Server (WLS) 6.1 SP2 on Solaris
8 servers using 1.3.1_03 JDK. There are several applications running, but lets
use one of them as example.
I am using the following JDK parameters:
-XX:NewSize=96m -XX:MaxNewSize=96m -Xms384m -Xmx384m -XX:SurvivorRatio=2
The memory values on Solaris, before the application is started, are as follows:
Real memory = 4096M, Free memory = 2415M, Swap in use = 1059M, Swap free = 2322M
When I start the applications, I can see the memory foot print for this application
at around 540 Meg. Since JVM pre-allocates heap space, I expect this number to
remain constant as the application is stressed. But this does not happen, and
it puzzles me. I see the memory footprint of application go up, and that makes
me believe that is a memory leak somewhere. Since heap space remains below the
selected limit (384M), and the application does not over-run heap, it makes me
believe that the memory leak is not happening in application code; rather it is
Web Logic Server that is leaking memory.
As the application runs, the memory footprint increase from 540M to almost 900M,
to the point the system is left with very low free swap space, and the application
(not necessarily this particular one) starts throwing OutOfMemoryError.
At this point, it becomes impossible to recover and the only way out is to bounce
WLS.
Does it sound like a memory leak issue to you ? Do you agree that it look like
a WLS memory leak?
If anybody had similar experience, please help me with your advice. I would be
very interested in knowing how you diagnosed the problem and what solution did
you apply.
Thanks,
Asad FaiziThe native OCI driver is not allocating out of the Java heap, but rather
from the OS (or the c rtl) so the Java heap parameters do not affect it. I
don't know if it is a problem that you see or just normal behavior.
Peace,
Cameron Purdy
Tangosol, Inc.
http://www.tangosol.com/coherence.jsp
Tangosol Coherence: Clustered Replicated Cache for Weblogic
"Asad Faizi" <[email protected]> wrote in message
news:[email protected]...
>
Cameron,
We are using Oracle-8.1.7r3 driver. Can you give me some more informationas to
why do you suspect Oracle JDBC driver? Have you had similar experience ?How did
you diagnose this and what did you do to fix it?
Thanks,
Asad Faizi
"Cameron Purdy" <[email protected]> wrote:
Probably a JDBC driver (Oracle OCI?).
Peace,
Cameron Purdy
Tangosol, Inc.
http://www.tangosol.com/coherence.jsp
Tangosol Coherence: Clustered Replicated Cache for Weblogic
"Asad Faizi" <[email protected]> wrote in message
news:[email protected]...
Hello,
I need your help in getting to the bottom of a memory issue we arefacing.
We are running EJB based applications on Web Logic Server (WLS) 6.1SP2 on
Solaris
8 servers using 1.3.1_03 JDK. There are several applications running,but
lets
use one of them as example.
I am using the following JDK parameters:
-XX:NewSize=96m -XX:MaxNewSize=96m -Xms384m -Xmx384m -XX:SurvivorRatio=2
The memory values on Solaris, before the application is started, areas
follows:
Real memory = 4096M, Free memory = 2415M, Swap in use = 1059M, Swapfree =
2322M
When I start the applications, I can see the memory foot print forthis
application
at around 540 Meg. Since JVM pre-allocates heap space, I expect thisnumber to
remain constant as the application is stressed. But this does not
happen,
and
it puzzles me. I see the memory footprint of application go up, andthat
makes
me believe that is a memory leak somewhere. Since heap space remainsbelow
the
selected limit (384M), and the application does not over-run heap,it
makes me
believe that the memory leak is not happening in application code;rather
it is
Web Logic Server that is leaking memory.
As the application runs, the memory footprint increase from 540M toalmost
900M,
to the point the system is left with very low free swap space, andthe
application
(not necessarily this particular one) starts throwing OutOfMemoryError.
At this point, it becomes impossible to recover and the only way outis to
bounce
WLS.
Does it sound like a memory leak issue to you ? Do you agree that itlook
like
a WLS memory leak?
If anybody had similar experience, please help me with your advice.I
would be
very interested in knowing how you diagnosed the problem and what
solution
did
you apply.
Thanks,
Asad Faizi -
Eclipse TPTP to track memory leak?
Hello,
I am writing a rather large program and I am collecting a lot of data. My problem is that I'm running out of heap space. I need to track large amounts of weather data over the course of the year, but I don't think that is the problem. I think I have a memory leak somewhere and I can't find it. I am working in Eclipse and I've heard a bit about the TPTP tools. I was just wondering if anyone could direct me to a tutorial for using these tools or at least give me a general set of instructions? I have everything installed but can't find a good tutorial anywhere.JProfiler is one such tool.
However, you might try increasing the amonut of memory the heap in java is allowed to use before looking into those tools.
Perhaps your application just uses a lot of memory rather than a memory leak. Search google for 'java xmx' on how to increase heap size. -
Batch sequence memory leak?
I wrote a JavaScript batch sequence and ran it in Acrobat 9 Pro on a folder of PDFs. Acrobats memory use steadily increased until it hit 1.1 GB. Then an Acrobat dialog said no files were processed, the memory use dropped back to normal and the CPU usage dropped to zero. So it looks like the problem includes a memory leak. As a test, I replaced my batch sequence with a simple, one-line test:
var r = test;
It has the same behavior. Any ideas?thanks for your reply.
i have gone through those APIs you have mentioned and understood that we can run any custom command or existing global command using those APIs.
my requirement is to launch the sequence file created. is there any way to directly launch the sequence file or else do i need to process the sequence file to know the command and parameters?
if i need to process the sequence file, it will be always "Recognize text using OCR" and parameters may differ. for this, what is the command i need to execute?
i am new to this environment, please dont mistake me.
thanks in advance.
regards -
Querying BOE security - getObjectPrincipals() has memory leak?
Hi,
I am querying the BOBJ Enterprise security and noticed that when I introduce the getObjectPrincipals() method in my code, my program consumes a great deal of additional memory, and will eventually fail due to insufficient heap space as the code iterates through the reports. The issue does seem to be tied to specifically this method, as the memory is handled fine with everything else the same. Is there a known memory leak with this method? I am currently testing against XI R2 SP2 and noticed in release notes for SP5 there was a documented memory leak with a similiar method in the COM SDK - getAnyPrincipals().
Can anyone shed any light on this? I can provide code samples too if need be...
Thanks!Thanks for the responses guys.
Ruben - I did try to use remove() for both of my iterators in use (the first of which contains all principals who have rights for the given InfoObject, and the 2nd contains all of the explicit security rights for the principal) - this unfortunately didn't have any affect on the memory usage. What I tried was as follows:
ISecurityInfo objSecurityInfo = boInfoObject.getSecurityInfo();
IObjectPrincipals objPrincipals = objSecurityInfo.getObjectPrincipals(); //THIS I BELIEVE TO HAVE MEMORY LEAK
Iterator objPrincipalIterator = objPrincipals.iterator();
//retrieve rights applied to object
while (objPrincipalIterator.hasNext())
...get security Role information for each principal
//now get explicit rights information
ISecurityRights objPrincipalExpRights = objPrincipal.getRights();
Iterator objPrincipalExpRightsIterator = objPrincipalExpRights.iterator();
while (objPrincipalExpRightsIterator.hasNext()
..process explicit rights
objPrincipalExpRightsIterator.remove();
obPrincipalIterator.remove();
Ted,
I was already batching the # of InfoObjects to retrieve security information for, but just to be sure I greatly decreased this number and did not see any improvement in memory usage. I actually worked a case with SAP on this question, and they confirmed there was a memory leak with the getObjectPrincipals() method. They confirmed this was fixed for XI R2 in SP5 for the .Net and COM SDKs, but not for Java. Is there anything else I can try? Using getObjectPrincipals(1) for only explicit rights works great as far as memory consumption, but only exposes users with custom roles and I need to retrieve principals with any type of role.
Thanks! -
what are some methods to load an applet faster that is on the local machine? also, are there any applications to test for memory leaks? and are there ways to invoke garbage collection with code? thanx in advance.
Applet on the local machine will load faster because file is already there
use System.gc() to do a garbage collection -
ITunes 11 Memory leak when search box is clicked, large library
Mac pro running 10.7 8-core 14gb ram, itunes library on a striped array
scrolling performance is a huge improvement but the app hangs when the search bock is clicked on
and it goes into a massive memory leak, see attached screen grab
works fine in mountain lion with a smaller library, so I assume its choking on my 140,000 tunes ?I have the same problem. iTunes will eat up 80gb of space if I leave it running; eventually I have to force quit it, and slowly after that the hard drive space returns.
I wasn't sure if it was choking on the search tool, but I have a fairly large library also, so it would make sense.
Anyone got any good fixes for this? -
Run the Media Center Deluxe III application.
Open up the Windows Task Manager (which is always on top) and select the Performance tab. Now navigate the Media Center application with the remote and watch your available memory go down with EVERY remote button press.No, like any memory leak, it is gone for good, although it might be reclaimed if you exit the program.
Obviously this can have severe consequences on the stability of the OS. Windows chokes in low memory situations.
Maybe you are looking for
-
Hi All, I have created a Site and List Workflow using SharePoint designer 2013, its a simple list workflow with one stage init on creating an item. When i verified the status of workflow its showing as initiator = Anonymous and Internal Status - Not
-
How to print with a Canon Compact Photo Printer CP-330?
never found a so hard issue, I'm used to plug&play hardware... can anyone help me printing from iPhoto or Photoshop to a Canon Compact Photo Printer CP-330? I tried with Canon's drivers, with Gimp 5, anything... one time the printer started working,
-
Facing problem with RFC connections
In the Maintenace View for RFC connections, when I press the 'Apply' button I am getting the message"You have no authorization to display the destinationu201D for all the 4 destination IDs" Can somebody suggest on how to overcome this problem? Thanks
-
Does Airplay make music through Airport Express obsolete?
Does Airport Express with streaming music still have any advantages to using Airplay to stream music? Thanks.
-
How do you configure 8.1.7 NT/IFS 1.1 to use Apache for IFS?
Now that the 8.1.7 version for NT and IFS 1.1 is out how do you configure it to use Apache for IFS? There is no 'ifsapachesetup' file included in the download (the CDs are still not available). Installed 8.1.7 database on a clean (no oracle) PC runni