Pro*c multithreaded application has memory leak

Hi there,
I posted this message a week ago in OCI section, nobody answer me.
I am really curious if my application has a bug or the pro*c has a bug.
Anyone can compile the sample code and test it easily.
I made multithreaded application which queries dynamic SQL, it works.
But the memory leaks when i query the SQL statement.
The more memory leaks, the more i query the SQL statement, even same SQL
statement.
I check it with top, shell command.
My machine is SUN E450, Solaris 8. Oracle 9.2.0.1
Compiler : gcc (GCC) 3.2.2
I changed source code which is from
$(ORACLE_HOME)/precomp/demo/proc/sample10.pc
the sample10 doesn't need to be multithreaded. But i think it has to work
correctly if i changed it to multithreaded application.
the make file and source code will be placed below.
I have to figure out the problem.
Please help
Thanks in advance,
the make file is below
HOME = /user/jkku
ORA = $(ORACLE_HOME)
CC = gcc
PROC = proc
LC_INCL = -I$(HOME)/work/dbmss/libs/include
lc_incl = include=$(HOME)/work/dbmss/libs/include
SYS_INCL =
sys_incl =
ORA_INCL = -I. \
-I$(ORA)/precomp/public \
-I$(ORA)/rdbms/public \
-I$(ORA)/rdbms/demo \
-I$(ORA)/rdbms/pbsql/public \
-I$(ORA)/network/public \
-DSLMXMX_ENABLE -DSLTS_ENABLE -D_SVID_GETTOD
INCLUDES = $(LC_INCL) $(SYS_INCL) $(ORA_INCL)
includes = $(lc_incl) $(sys_incl)
LC_LIBS =
SYS_LIBS = -lpthread -lsocket -lnsl -lrt
ORA_LIBS = -L$(ORA)/lib/ -lclntsh
LIBS = $(LC_LIBS) $(SYS_LIBS) $(ORA_LIBS)
# Define C Compiler flags
CFLAGS += -D_Solaris64_ -m64
CFLAGS += -g -D_REENTRANT
# Define pro*c Compiler flags
PROCFLAGS += THREADS=YES
PROCFLAGS += CPOOL=YES
# Our object files
PRECOMPS = sample10.c
OBJS = sample10.o
.SUFFIXES: .o .c .pc
.c.o:
$(CC) -c $(CFLAGS) $(INCLUDES) $*.c
.pc.c:
$(PROC) $(PROCFLAGS) $(includes) $*.pc $*.c
all: sample10
sample10: $(PRECOMPS) $(OBJS)
$(CC) $(CFLAGS) -o sample10 $(OBJS) $(LIBS)
clean:
rm -rf *.o sample10 sample10.c
the source code is below which i changed the oracle sample10.pc to
multithreaded application.
Sample Program 10: Dynamic SQL Method 4
This program connects you to ORACLE using your username and
password, then prompts you for a SQL statement. You can enter
any legal SQL statement. Use regular SQL syntax, not embedded SQL.
Your statement will be processed. If it is a query, the rows
fetched are displayed.
You can enter multi-line statements. The limit is 1023 characters.
This sample program only processes up to MAX_ITEMS bind variables and
MAX_ITEMS select-list items. MAX_ITEMS is #defined to be 40.
#include <stdio.h>
#include <string.h>
#include <setjmp.h>
#include <sqlda.h>
#include <stdlib.h>
#include <sqlcpr.h>
/* Maximum number of select-list items or bind variables. */
#define MAX_ITEMS 40
/* Maximum lengths of the names of the
select-list items or indicator variables. */
#define MAX_VNAME_LEN 30
#define MAX_INAME_LEN 30
#ifndef NULL
#define NULL 0
#endif
/* Prototypes */
#if defined(__STDC__)
void sql_error(void);
int oracle_connect(void);
int alloc_descriptors(int, int, int);
int get_dyn_statement(void);
void set_bind_variables(void);
void process_select_list(void);
void help(void);
#else
void sql_error(/*_ void _*/);
int oracle_connect(/*_ void _*/);
int alloc_descriptors(/*_ int, int, int _*/);
int get_dyn_statement(/* void _*/);
void set_bind_variables(/*_ void -*/);
void process_select_list(/*_ void _*/);
void help(/*_ void _*/);
#endif
char *dml_commands[] = {"SELECT", "select", "INSERT", "insert",
"UPDATE", "update", "DELETE", "delete"};
EXEC SQL INCLUDE sqlda;
EXEC SQL INCLUDE sqlca;
EXEC SQL BEGIN DECLARE SECTION;
char dyn_statement[1024];
EXEC SQL VAR dyn_statement IS STRING(1024);
EXEC SQL END DECLARE SECTION;
EXEC ORACLE OPTION (ORACA=YES);
EXEC ORACLE OPTION (RELEASE_CURSOR=YES);
SQLDA *bind_dp;
SQLDA *select_dp;
/* Define a buffer to hold longjmp state info. */
jmp_buf jmp_continue;
char *db_uid="dbmuser/dbmuser@dbmdb";
sql_context ctx;
int err_sql;
enum{
SQL_SUCC=0,
SQL_ERR,
SQL_NOTFOUND,
SQL_UNIQUE,
SQL_DISCONNECT,
SQL_NOTNULL
int main()
int i;
EXEC SQL ENABLE THREADS;
EXEC SQL WHENEVER SQLERROR DO sql_error();
EXEC SQL WHENEVER NOT FOUND DO sql_not_found();
/* Connect to the database. */
if (connect_database() < 0)
exit(1);
EXEC SQL CONTEXT USE :ctx;
/* Process SQL statements. */
for (;;)
/* Allocate memory for the select and bind descriptors. */
if (alloc_descriptors(MAX_ITEMS, MAX_VNAME_LEN, NAME_LEN) != 0)
exit(1);
(void) setjmp(jmp_continue);
/* Get the statement. Break on "exit". */
if (get_dyn_statement() != 0)
break;
EXEC SQL PREPARE S FROM :dyn_statement;
EXEC SQL DECLARE C CURSOR FOR S;
/* Set the bind variables for any placeholders in the
SQL statement. */
set_bind_variables();
/* Open the cursor and execute the statement.
* If the statement is not a query (SELECT), the
* statement processing is completed after the
* OPEN.
EXEC SQL OPEN C USING DESCRIPTOR bind_dp;
/* Call the function that processes the select-list.
* If the statement is not a query, this function
* just returns, doing nothing.
process_select_list();
/* Tell user how many rows processed. */
for (i = 0; i < 8; i++)
if (strncmp(dyn_statement, dml_commands, 6) == 0)
printf("\n\n%d row%c processed.\n", sqlca.sqlerrd[2], sqlca.sqlerrd[2] == 1 ? '\0' : 's');
break;
/* Close the cursor. */
EXEC SQL CLOSE C;
/* When done, free the memory allocated for pointers in the bind and
select descriptors. */
for (i = 0; i < MAX_ITEMS; i++)
if (bind_dp->V != (char *) 0)
free(bind_dp->V);
free(bind_dp->I); /* MAX_ITEMS were allocated. */
if (select_dp->V != (char *) 0)
free(select_dp->V);
free(select_dp->I); /* MAX_ITEMS were allocated. */
/* Free space used by the descriptors themselves. */
SQLSQLDAFree(ctx, bind_dp);
SQLSQLDAFree(ctx, select_dp);
} /* end of for(;;) statement-processing loop */
disconnect_database();
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL COMMIT WORK RELEASE;
puts("\nHave a good day!\n");
return;
* Allocate the BIND and SELECT descriptors using sqlald().
* Also allocate the pointers to indicator variables
* in each descriptor. The pointers to the actual bind
* variables and the select-list items are realloc'ed in
* the set_bind_variables() or process_select_list()
* routines. This routine allocates 1 byte for select_dp->V
* and bind_dp->V, so the realloc will work correctly.
alloc_descriptors(size, max_vname_len, max_iname_len)
int size;
int max_vname_len;
int max_iname_len;
int i;
* The first sqlald parameter determines the maximum number of
* array elements in each variable in the descriptor. In
* other words, it determines the maximum number of bind
* variables or select-list items in the SQL statement.
* The second parameter determines the maximum length of
* strings used to hold the names of select-list items
* or placeholders. The maximum length of column
* names in ORACLE is 30, but you can allocate more or less
* as needed.
* The third parameter determines the maximum length of
* strings used to hold the names of any indicator
* variables. To follow ORACLE standards, the maximum
* length of these should be 30. But, you can allocate
* more or less as needed.
if ((bind_dp =
SQLSQLDAAlloc(ctx, size, max_vname_len, max_iname_len)) ==
(SQLDA *) 0)
fprintf(stderr,
"Cannot allocate memory for bind descriptor.");
return -1; /* Have to exit in this case. */
if ((select_dp =
SQLSQLDAAlloc(ctx, size, max_vname_len, max_iname_len)) == (SQLDA *)
0)
fprintf(stderr,
"Cannot allocate memory for select descriptor.");
return -1;
select_dp->N = MAX_ITEMS;
/* Allocate the pointers to the indicator variables, and the
actual data. */
for (i = 0; i < MAX_ITEMS; i++) {
bind_dp->I = (short *) malloc(sizeof (short));
select_dp->I = (short *) malloc(sizeof(short));
bind_dp->V = (char *) malloc(1);
select_dp->V = (char *) malloc(1);
return 0;
int get_dyn_statement()
char *cp, linebuf[256];
int iter, plsql;
for (plsql = 0, iter = 1; ;)
if (iter == 1)
printf("\nSQL> ");
dyn_statement[0] = '\0';
fgets(linebuf, sizeof linebuf, stdin);
cp = strrchr(linebuf, '\n');
if (cp && cp != linebuf)
*cp = ' ';
else if (cp == linebuf)
continue;
if ((strncmp(linebuf, "EXIT", 4) == 0) ||
(strncmp(linebuf, "exit", 4) == 0))
return -1;
else if (linebuf[0] == '?' ||
(strncmp(linebuf, "HELP", 4) == 0) ||
(strncmp(linebuf, "help", 4) == 0))
help();
iter = 1;
continue;
if (strstr(linebuf, "BEGIN") ||
(strstr(linebuf, "begin")))
plsql = 1;
strcat(dyn_statement, linebuf);
if ((plsql && (cp = strrchr(dyn_statement, '/'))) ||
(!plsql && (cp = strrchr(dyn_statement, ';'))))
*cp = '\0';
break;
else
iter++;
printf("%3d ", iter);
return 0;
void set_bind_variables()
int i, n;
char bind_var[64];
/* Describe any bind variables (input host variables) */
EXEC SQL WHENEVER SQLERROR DO sql_error();
bind_dp->N = MAX_ITEMS; /* Initialize count of array elements. */
EXEC SQL DESCRIBE BIND VARIABLES FOR S INTO bind_dp;
/* If F is negative, there were more bind variables
than originally allocated by sqlald(). */
if (bind_dp->F < 0)
printf ("\nToo many bind variables (%d), maximum is %d\n.",
-bind_dp->F, MAX_ITEMS);
return;
/* Set the maximum number of array elements in the
descriptor to the number found. */
bind_dp->N = bind_dp->F;
/* Get the value of each bind variable as a
* character string.
* C contains the length of the bind variable
* name used in the SQL statement.
* S contains the actual name of the bind variable
* used in the SQL statement.
* L will contain the length of the data value
* entered.
* V will contain the address of the data value
* entered.
* T is always set to 1 because in this sample program
* data values for all bind variables are entered
* as character strings.
* ORACLE converts to the table value from CHAR.
* I will point to the indicator value, which is
* set to -1 when the bind variable value is "null".
for (i = 0; i < bind_dp->F; i++)
printf ("\nEnter value for bind variable %.*s: ",
(int)bind_dp->C, bind_dp->S);
fgets(bind_var, sizeof bind_var, stdin);
/* Get length and remove the new line character. */
n = strlen(bind_var) - 1;
/* Set it in the descriptor. */
bind_dp->L = n;
/* (re-)allocate the buffer for the value.
sqlald() reserves a pointer location for
V but does not allocate the full space for
the pointer. */
bind_dp->V = (char *) realloc(bind_dp->V, (bind_dp->L + 1));
/* And copy it in. */
strncpy(bind_dp->V, bind_var, n);
/* Set the indicator variable's value. */
if ((strncmp(bind_dp->V, "NULL", 4) == 0) ||
(strncmp(bind_dp->V, "null", 4) == 0))
*bind_dp->I = -1;
else
*bind_dp->I = 0;
/* Set the bind datatype to 1 for CHAR. */
bind_dp->T = 1;
return;
void process_select_list()
int i, null_ok, precision, scale;
if ((strncmp(dyn_statement, "SELECT", 6) != 0) &&
(strncmp(dyn_statement, "select", 6) != 0))
select_dp->F = 0;
return;
/* If the SQL statement is a SELECT, describe the
select-list items. The DESCRIBE function returns
their names, datatypes, lengths (including precision
and scale), and NULL/NOT NULL statuses. */
select_dp->N = MAX_ITEMS;
EXEC SQL DESCRIBE SELECT LIST FOR S INTO select_dp;
/* If F is negative, there were more select-list
items than originally allocated by sqlald(). */
if (select_dp->F < 0)
printf ("\nToo many select-list items (%d), maximum is %d\n",
-(select_dp->F), MAX_ITEMS);
return;
/* Set the maximum number of array elements in the
descriptor to the number found. */
select_dp->N = select_dp->F;
/* Allocate storage for each select-list item.
sqlprc() is used to extract precision and scale
from the length (select_dp->L).
sqlnul() is used to reset the high-order bit of
the datatype and to check whether the column
is NOT NULL.
CHAR datatypes have length, but zero precision and
scale. The length is defined at CREATE time.
NUMBER datatypes have precision and scale only if
defined at CREATE time. If the column
definition was just NUMBER, the precision
and scale are zero, and you must allocate
the required maximum length.
DATE datatypes return a length of 7 if the default
format is used. This should be increased to
9 to store the actual date character string.
If you use the TO_CHAR function, the maximum
length could be 75, but will probably be less
(you can see the effects of this in SQL*Plus).
ROWID datatype always returns a fixed length of 18 if
coerced to CHAR.
LONG and
LONG RAW datatypes return a length of 0 (zero),
so you need to set a maximum. In this example,
it is 240 characters.
printf ("\n");
for (i = 0; i < select_dp->F; i++)
char title[MAX_VNAME_LEN];
/* Turn off high-order bit of datatype (in this example,
it does not matter if the column is NOT NULL). */
sqlnul ((unsigned short *)&(select_dp->T), (unsigned short
*)&(select_dp->T), &null_ok);
switch (select_dp->T)
case 1 : /* CHAR datatype: no change in length
needed, except possibly for TO_CHAR
conversions (not handled here). */
break;
case 2 : /* NUMBER datatype: use sqlprc() to
extract precision and scale. */
sqlprc ((unsigned int *)&(select_dp->L), &precision,
&scale);
/* Allow for maximum size of NUMBER. */
if (precision == 0) precision = 40;
/* Also allow for decimal point and
possible sign. */
/* convert NUMBER datatype to FLOAT if scale > 0,
INT otherwise. */
if (scale > 0)
select_dp->L = sizeof(float);
else
select_dp->L = sizeof(int);
break;
case 8 : /* LONG datatype */
select_dp->L = 240;
break;
case 11 : /* ROWID datatype */
case 104 : /* Universal ROWID datatype */
select_dp->L = 18;
break;
case 12 : /* DATE datatype */
select_dp->L = 9;
break;
case 23 : /* RAW datatype */
break;
case 24 : /* LONG RAW datatype */
select_dp->L = 240;
break;
/* Allocate space for the select-list data values.
sqlald() reserves a pointer location for
V but does not allocate the full space for
the pointer. */
if (select_dp->T != 2)
select_dp->V = (char *) realloc(select_dp->V,
select_dp->L + 1);
else
select_dp->V = (char *) realloc(select_dp->V,
select_dp->L);
/* Print column headings, right-justifying number
column headings. */
/* Copy to temporary buffer in case name is null-terminated */
memset(title, ' ', MAX_VNAME_LEN);
strncpy(title, select_dp->S, select_dp->C);
if (select_dp->T == 2)
if (scale > 0)
printf ("%.*s ", select_dp->L+3, title);
else
printf ("%.*s ", select_dp->L, title);
else
printf("%-.*s ", select_dp->L, title);
/* Coerce ALL datatypes except for LONG RAW and NUMBER to
character. */
if (select_dp->T != 24 && select_dp->T != 2)
select_dp->T = 1;
/* Coerce the datatypes of NUMBERs to float or int depending on
the scale. */
if (select_dp->T == 2)
if (scale > 0)
select_dp->T = 4; /* float */
else
select_dp->T = 3; /* int */
printf ("\n\n");
/* FETCH each row selected and print the column values. */
EXEC SQL WHENEVER NOT FOUND GOTO end_select_loop;
for (;;)
EXEC SQL FETCH C USING DESCRIPTOR select_dp;
/* Since each variable returned has been coerced to a
character string, int, or float very little processing
is required here. This routine just prints out the
values on the terminal. */
for (i = 0; i < select_dp->F; i++)
if (*select_dp->I < 0)
if (select_dp->T == 4)
printf ("%-*c ",(int)select_dp->L+3, ' ');
else
printf ("%-*c ",(int)select_dp->L, ' ');
else
if (select_dp->T == 3) /* int datatype */
printf ("%*d ", (int)select_dp->L,
*(int *)select_dp->V);
else if (select_dp->T == 4) /* float datatype */
printf ("%*.2f ", (int)select_dp->L,
*(float *)select_dp->V);
else /* character string */
printf ("%-*.*s ", (int)select_dp->L,
(int)select_dp->L, select_dp->V);
printf ("\n");
end_select_loop:
return;
void help()
puts("\n\nEnter a SQL statement or a PL/SQL block at the SQL> prompt.");
puts("Statements can be continued over several lines, except");
puts("within string literals.");
puts("Terminate a SQL statement with a semicolon.");
puts("Terminate a PL/SQL block (which can contain embedded
semicolons)");
puts("with a slash (/).");
puts("Typing \"exit\" (no semicolon needed) exits the program.");
puts("You typed \"?\" or \"help\" to get this message.\n\n");
int connect_database()
err_sql = SQL_SUCC;
EXEC SQL WHENEVER SQLERROR DO sql_error();
EXEC SQL WHENEVER NOT FOUND DO sql_not_found();
EXEC SQL CONTEXT ALLOCATE :ctx;
EXEC SQL CONTEXT USE :ctx;
EXEC SQL CONNECT :db_uid;
if(err_sql != SQL_SUCC){
printf("err => connect database(ctx:%ld, uid:%s) failed!\n", ctx, db_uid);
return -1;
return 1;
int disconnect_database()
err_sql = SQL_SUCC;
EXEC SQL WHENEVER SQLERROR DO sql_error();
EXEC SQL WHENEVER NOT FOUND DO sql_not_found();
EXEC SQL CONTEXT USE :ctx;
EXEC SQL COMMIT WORK RELEASE;
EXEC SQL CONTEXT FREE:ctx;
return 1;
void sql_error()
printf("err => %.*s", sqlca.sqlerrm.sqlerrml, sqlca.sqlerrm.sqlerrmc);
printf("in \"%.*s...\'\n", oraca.orastxt.orastxtl, oraca.orastxt.orastxtc);
printf("on line %d of %.*s.\n\n", oraca.oraslnr, oraca.orasfnm.orasfnml,
oraca.orasfnm.orasfnmc);
switch(sqlca.sqlcode) {
case -1: /* unique constraint violated */
err_sql = SQL_UNIQUE;
break;
case -1012: /* not logged on */
case -1089:
case -3133:
case -1041:
case -3114:
case -3113:
/* �6�Ŭ�� shutdown�ǰų� �α��� ���°� �ƴҶ� ��b�� �õ� */
/* immediate shutdown in progress - no operations are permitted */
/* end-of-file on communication channel */
/* internal error. hostdef extension doesn't exist */
err_sql = SQL_DISCONNECT;
break;
case -1400:
err_sql = SQL_NOTNULL;
break;
default:
err_sql = SQL_ERR;
break;
EXEC SQL CONTEXT USE :ctx;
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL ROLLBACK WORK;
void sql_not_found()
err_sql = SQL_NOTFOUND;

Hi Jane,
What version of Berkeley DB XML are you using?
What is your operating system and your hardware platform?
For how long have been the application running?
What is your current container size?
What's set for EnvironmentConfig.setThreaded?
Do you know if containers have previously not been closed correctly?
Can you please post the entire error output?
What's the JDK version, 1.4 or 1.5?
Thanks,
Bogdan

Similar Messages

  • Firefox 6.0 has memory leak

    Firefox 6.0 (release) has a memory leak.
    Tested with 5 windows and 43 pages loaded and left overnight, it crashed after several hours. Able to fully repro this every time.
    I left it for 10 mins after all pages loaded. I opened Task Manager and I can see the Memory (Private Working Set) increasing every few seconds.

    Well I'm using 7 beta and my memory usage is just short of 600,000k with plugin container using another 220,000k. There is a massive problem with this!

  • Word 2011 has memory leak after applying 10.8.1 update

    Word started crashing on me recently, it occurs every 8 to 10 minutes when i am working with a large documents.  I looked around at the forums and tried all the "Verify Disk Permissions", re-installing, removing normal.dot and word preferences and creating new users.  None of these work.  I opened Activity monitor and witnessed the memory grow rapidly without any activity in word (The larger the document, the quicker it would rise) from 0-1.5 Gb in around 10 minutes - High CPU is also presentduring this memory leak.  When the memory reaches the limit of the available system memory (usually around 1.6G), word crashes.
    I tested the same documents on a few other similar computers (macbook and another imac) they did not have the issue, memory remained steady for long periods of time.  I check the software versions of the computers and Word was all the same (14.2.3) however OS X was only 10.8 on the working computers where as the failing computer was 10.8.1. 
    I confirmed the error by updating both of the other computers to 10.8.1, now all computers exhibit the memory leak.
    Anyone got any ideas?

    Update Soundflower to the most recent version. You have an unsupported edition. http://code.google.com/p/soundflower/downloads/detail?name=Soundflower-1.6.6b.dm g&can=2&q=

  • 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!

  • Use JNI application has memory manager, feasible?

    Hi,
    This is an attempt to circumvent javas poor memory management capabilities. Since java is unable to allocate memory dynamically (*) I'm thinking of writing a native library capable of allocating memory and then allowing java applications to stow away data in this area. The application would be able to access the memory directly through some java.nio.ByteArray-type implementation.
    The java application would be responsible for allocating and deallocating, reading and writing data.
    Is this feasible? Has anyone done this already? I guess a JNI is solution would be pretty straightforward?
    (...this will be my first experience with JNI)
    (*) Xmx option can be used assuming you know beforehand the memory requirements.

    Hi,
    This is feasible since JNative already does this.
    See Pointer and MemoryBlockFactory classes to do this.
    --Marc (http://jnative.sf.net)                                                                                                                                                                                                                                                                                           

  • Flash Builder 4.7 Freezing and It appears that Flash Builder 4.7 has memory leaks so please suggest asap

    Hi,
    We are facing this issue in 4.7 as 4.6 version is working absolutely fine, so please look into this asap

    Figured it out. Don´t know where the egit installation came from but it was incompatible with fb 4.7.
    Added http://download.eclipse.org/egit/updates
    to update sites, installed an update, now it works properly.

  • The Security ID is not valid causes memory leak in Ldap

    Hi, all:
    We are using the Novell LDAP Provider to allow our server application
    be configured in LDAP mode. One of our clients is experiencing a memory
    leak and we believe that the problem could be related to a "The Security
    ID is not valid" error. When he changes to native Active Directory mode
    the memory leak dissapears (he still gets the "Security ID" error, but
    all works fine). So, we think that the problem caused by the "Security
    ID" error is affecting the Novell Ldap Provider library. He is using a
    Windows 2008 R2 platform.
    My question is: Do you know if these kind of errors are properly
    handled so that resources are released?
    We are using the 2.1.10.1 version of the library.
    Many thanks for you help,
    Luis
    luixrodix
    luixrodix's Profile: http://forums.novell.com/member.php?userid=107647
    View this thread: http://forums.novell.com/showthread.php?t=435894

    ab;2091346 Wrote:
    > -----BEGIN PGP SIGNED MESSAGE-----
    > Hash: SHA1
    >
    > Have the exact error message? Is it safe to assume you are querying
    > MAD
    > and not eDirectory? I make that assumption because you mentioned
    > SIDs.
    >
    > Good luck.
    >
    > Yes the message is: "The Security ID structure is invalid". It is the
    > error 1337 of Windows and cannot be fixed manually since SIDs cannot be
    > modified manually.
    >
    >
    > When the client has configured our tool as Active Directory via LDAP
    > (using the Novell Ldap library) the error is not logged anywhere (that's
    > another reason for thinking that the library is not handling the error
    > correctly) and the application has memory leaks everytime the AD server
    > is queried, but when they use the same Active Directory but in a pure AD
    > configuration (using System.DirectoryServices and Windows API directly)
    > the error is logged and the memory of the application remains stable.
    >
    > I asked the client to fix the Security ID problem, trying to find the
    > user(s) whose SID are wrong and re-creating them, but if the Novell.Ldap
    > library is not handling this error correctly the potential problem is
    > still there.
    >
    >
    >
    >
    >
    > On 03/30/2011 08:36 AM, luixrodix wrote:
    > >
    > > I mean, everytime a query is sent to the LDAP server an Invalid SID
    > is
    > > reported, and some resources are not released. We think that the
    > problem
    > > could be in the LDAP Novell library.
    > >
    > >
    > -----BEGIN PGP SIGNATURE-----
    > Version: GnuPG v2.0.15 (GNU/Linux)
    > Comment: Using GnuPG with Mozilla - 'Enigmail: A simple interface for
    > OpenPGP email security' (http://enigmail.mozdev.org/)
    >
    > iQIcBAEBAgAGBQJNk2bcAAoJEF+XTK08PnB5K1oP/RB5AUOUtXi13jS/3bSG0wVC
    > uErEfdqBj6R7yliZ8oqkLApQXzEomMwmSRwa4K6v+Rj1MDFBW+ nBFTOv4aHVgq53
    > ANslfM0inboZIxuQxBEhB/5HD062s4yGHTgL81LgeKdYyZvx0np6zmgDOVA/Ogx5
    > GS0nQfAhUZ+tAlgrhzRj3FB9WaamSQsdmEbXCTLjIrhy2FjH14 RidAmY0civvAsw
    > 5EoAlPe56JzQWhdzyIMhodVB2lIa2b+ttoKY7+Q35PsW2KJ3zl +O2MgHBdBtGUOQ
    > DekIR3h5kOjsRGAia8Td1eqSjziNB04fBcjR++B1vLuzE7YSGR mfRVAofOdjtlsR
    > lQ7sRX5Wg9cKN0KniMmvgrKaMqYcnl3wGgvhbVDA+vgriOxnRt PRssrTckrRaOcU
    > KvE3efwvgbdWeRNdfVAwU2qMPrsEA051XBtRKCclv5Ebi6AgwZ uuT3rYRm2Ycusy
    > TebrcX+YkiCZE+GYfULzN2KDUoxCbB85xBGwsg9Iz2/nTt6mkHT0+KqNM713uNJX
    > OqtJJP1fvfw6JMeQW5rS0VrTl2yGncJHf+cvrp0cXx8l+CJkB3 X7phZ5N0c1ttTc
    > 9cPCT+WuC7lCn4QviC8QlmZUYfbGDZmYbxm4ewUalB4J6uoBgy HPSbDITHXIeTz9
    > ISovMI9iFXzrS+Cjd7dk
    > =HEVD
    > -----END PGP SIGNATURE-----
    luixrodix
    luixrodix's Profile: http://forums.novell.com/member.php?userid=107647
    View this thread: http://forums.novell.com/showthread.php?t=435894

  • Tool to check memory leak

    One of tmy applications has memory leak sometimes, not always. I find most tools to check the memory leak needs to reproduce the leak, but now I can not reproduce this issue, is there any tool to analyze the source code to find the memory leak?

    Don't know about source code analyzer, but dbx, the Sun Studio debugger, is capable of detecting memory leaks at run time. You can use bcheck script on your application or start dbx, issue "check -leaks" and then run your app under dbx.

  • JSF: partial page rendering is causing memory leak leading to outofmemory

    JDeveloper 10.1.3.2.0
    JDK: 1.6.0_06
    Operating System: Windows XP.
    I test my application for memory leaks. For that purpose, I use jconsole to monitor java heap space. I have an edit page that has two dependent list components. One displays all countries and the other displays cities of the selected country.
    I noticed java heap space keeps growing as I change country from country list.
    I run garbage collection and memory usage does not go down. If I keep changing the province for 5 minutes, then I hit a java heap space outofmemory exception.
    To narrow down the problem, I removed the second city component and the problem still exists.
    To narrow it down further, I removed autosubmit attribute from the country component and then memory usage stopped increasing as I change country.
    country/city partial page rendering is just an example. I am able to reproduce the same problem on every page where i use partial page rendering. My conclusion is PPR is causing memory leak or at least the autosubmit attribute.
    This is really bad. Anyone out there experienced same issue. Any help/advice is highly appreciated !!
    Thanks
    <af:panelLabelAndMessage
    inlineStyle="font-weight:bold;"
    label="Country:"
    tip=" "
    showRequired="true"
    for="CountryId">
    <af:selectOneChoice id="CountryId"
                   valuePassThru="true"
                   value="#{bindings.CountryId.inputValue}"
                   autoSubmit="true"
                   inlineStyle="width:221px"
                   simple="true">
         <af:forEach var="item"
              items="#{bindings.CountriesListIterator.allRowsInRange}">
         <af:selectItem value="#{item.countryId}"
                   label="#{item.countryName}"/>
         </af:forEach>
    </af:selectOneChoice>
    </af:panelLabelAndMessage>
    <af:panelLabelAndMessage
    inlineStyle="font-weight:bold;"
    label="City:"
    tip=" "
    showRequired="true"
    for="CityId">
    <af:selectOneChoice id="CityId"
                   valuePassThru="true"
                   value="#{bindings.CityId.inputValue}"
                   partialTriggers="CountryId"
                   autoSubmit="true"
                   inlineStyle="width:221px"
                   unselectedLabel="--Select City--"
                   simple="true">
         <f:selectItems value="#{backing_CountryCityBean.citiesSelectItems}"/>
    </af:selectOneChoice>
    </af:panelLabelAndMessage>

    Samsam,
    I haven't seen this problem myself, no.
    To clarify - are you seeing this behaviour when running your app in JDeveloper, or when running in an application server? If in JDeveloper, a copuple of suggestions:
    * (may not matter, but...) It's not supported to run JDev 10g with JDK 6
    * have you tried the [url http://www.oracle.com/technology/pub/articles/masterj2ee/j2ee_wk11.html]memory profiler
    Best,
    John

  • Memory leak with File Write.vi

    Hi All,
    I am trying to save a big data cluster, which includes images, into a data log file. The vis I use are: New File.vi, Write File.vi, Close File.vi.
    The problem is Write File.vi has memory leak  when the data cluster includes images .
    Anyone sees similar case?  Any solution?
    Thanks.
    Aiqiu

    Aiqiu,
    I am glad you found out about flattening your image to a string.  I was about to post and say that you probably didn't want to save the IMAQ image reference to a file, because after you closed the image in memory, there wouldn't be anything for the IMAQ image reference to point to.  You are correct to flatten the image to a string.  Below is a link to a document which discusses doing this to communicate over datasocket, but the processes of flattening the image to a string is the same regardless of whether or not you are sending the image across a datasocket connection or saving to a file.
    Transfering Images with DataSocket
    As for the memory leak.  I am pretty sure that if you passed all of the IMAQ Image references created in the "Image Init Buffer.vi" subVI and then closed each reference individually, that the memory leak would probably go away.
    Lorne Hengst
    Application Engineer
    National Instruments

  • SQL Server 2012- Memory Leak Issue

    Team,
    We are running a Mission Critical Application on SQL Server 2012 SP2(11.0.5058) which is configured on Always ON Synchronous mode. Offlate due to heavy development work, Application team have come up with stating memory issues. I have analysed all the areas
    and everything looks normal. Please suggest if we have to patch the latest CU4 for SQL Server 2012 SP2. 
    The checks were performed on the below areas:
    - Errorlog, System Logs - No errors reported.
    - There are close to 8 Databases hosted on the instances which are all configured for AlwaysON. SQL Server is running on VM Infrastructure and the total physical memory allocated is 96GB out of which SQL is capped for 92GB. 
    -The Page Life Expectancy is healthy and is showing a greater number. There are no Signal waits either or pending memory grants. 
    - The writes are more than reads for one of the databases which is flagged with application team. There are no blockings & Deadlocks.
    Please suggest me the future course of action and your inputs are much appreciated.
    Best Regards,
    Sharath 

    Actual issue is- Application team have reported a memory leak and their builds have significantly slowed down. They suspect that its Database memory leak. However I have verified from database end and gave the above inputs. 
    The AOAGs are good. I was looking for any pointers whether there are any bugs which is related to memory leaks in SQL Server 2012.  I know all of them are addressed with SQL Server 2012 SP2. 
    Application team has NO idea about SQL Server do they ? And to say SQL Server has memory leak you have to actually prove it did they showed any proof. Its common for application team to say SQL Server is leaking memory because they are unaware about fact
    by default SQL Server would take as much memory as possible and would release when SQLOS asks it to do so. This might give sign that it is leaking memory BUT IT IS NOT.
    As you already said AOAG is working fine so I am presuming there is nothing much to worry. To monitor memory usage in SQL Server 2012 you can use below counters
    SQL Server: Memory Manager-- Target Server Memory (KB)
    SQL Server: Memory Manager--Total Server Memory (KB)
    SQL Server: Memory Manager- Free Memory (KB)
    SQL Server: Memory Manager--Database Cache Memory (KB)
    Please mark this reply as answer if it solved your issue or vote as helpful if it helped so that other forum members can benefit from it
    My Technet Wiki Article
    MVP

  • Mountain Lion memory leak while asleep?

    My early 2011 MBP started to randomly crash after installing ML and Safari would take an age to load, endless spinning wheels, apps not opening etc etc. So did a Boot sector permissions verify and repair (2 very minor mismatched files) then a reset of PRAM and SMC which has cured the crashes and improved things from startup and removed old Sophos and installed new ML version.
    But the biggest problem is when waking from sleep. I have a memory tool in my status bar which usually shows anything between 3.5 - 5gb free RAM under normal conditions (I have 8gb installed) and that is what will be showing when I put it to sleep. When waking I get constant spinning wheels, the clock is frozen (spinning wheel will start from Time Capsule icon all the way to Spotlight) and the RAM tool is displaying 45mb or less of free RAM. It takes at least 5 minutes for RAM to creep back up to 150mb or so when things will then start to become usable. But at this point I won't even get an internet connection until I use the memory tool to fee up more RAM. I've read of other problems regarding wireless connectivity when waking up but I'm using an ethernet connection. Once everything has calmed down and memory settled down MBP works flawlessly with no crashing and all apps working fine and there is a speed improvement but I shouldn't have to wait up to 10 minutes for my MBP to be usable. I did notice that when launching Sys Prefs the Time Machine tab caused it to freeze so could this have something to do with that?
    But what could be bleeding off the RAM while it's asleep?
    I'm so ****** off at this, never a problem with SL and definitely wishing I'd waited before doing this upgrade, it reminds me of my Windows Vista days!!!

    Hello.
    In my Macbook Pro 4GB RAM recently note memory leak when I opened Safari even with 1 or two windows open without refresh the web content.
    In Activity monitor could see consume Web Content the Safari Spend more the 2 GB RAM (Memory Real become Memory Inactive)
    Solution: Disable All Extensions and probe one to one. Finding that Fastesttube Extension was responsible.
    Check this Info
    http://atylmo.wordpress.com/2011/06/...d-fastesttube/
    Best Regards

  • Memory Leak Issue in OBIEE 11g

    Hi,
    We have OBIEE 11.1.1.5 installed on a 32-bit Windows Server. We had almost 10GB of free space yesterday, but after a few users logged in, the free space started coming down until we were left with no space at all.
    Since then we have removed all the files that we could and created more and more space, but OBIEE seems to be eating it all up. I have seen a few posts for such issues with the Linux Systems. Has anyone faced this with windows? Also, is there any solution for this.
    Thanks,
    Naman

    Hi Naman,
    Oracle has provided set of patches to avoid memory leaks.
    1) For memory leak with OPMN, apply the following patches:
    Patch:12920592: OPMN HAS MEMORY LEAK
    Patch:12989751: OPMN MEMORY STILL GAINS AFTER APPLYING PATCH#12920592
    2) For the Presentation Server (sawserver) issue, apply the patch:
    Patch:13102881: DATALAYOUT METADATA IMPLEMENTATION HEAP INTENSIVE
    Rgds,
    Dpka

  • Memory Leak Issue for Adobe Access iOS API

    Hi,
    We are trying to develop an iOS app (with ARC enabled) using Adobe Acces API 4.0 and we have identified that the function [drmManager createDRMSession] has memory leak.
    DRMSESSION = [drmManager createDRMSession:METADATA playlist:PLAYLIST error:nil complete:^() {}];
    We are using:
    DRMSESSION  -> weak
    METADATA    ->strong  (as need to share within object)
    PLAYLIST       ->strong  (as need to share within object)
    After calling this function, the object is unable to dealloc and most of the leaking object related to networking (such as CFNetwork...)
    Is this a known issue for the Adobe Access iOS API or we are missing some key steps.
    Any suggestions is appreciated. Thanks in advance.

    ans0600, sorry about that, I read Hiroshi's forward too quickly.  I've done a little digging and have come up with two work-arounds:
    Create a file with ARC disabled to translate the returned object to be an autorelease
    declare the returned DRMSession as __unsafe_unretained and use CFRelease, as noted on stackexchange
    In the future we may change this method to return an autoreleased object to avoid this issue.  Let us know if you have any further questions!

  • Shared memory problem - memory leak?

    I've got the following error after calling a stored procedure about 26000 times. Does this mean Oracle 8.1.6 Thin Driver has memory leak in CallableStatement? Thanks.
    ORA-04031: unable to allocate 4096 bytes of shared memory ("shared pool","BEGIN checktstn(:1, :2); END;","PL/SQL MPCODE","BAMIMA: Bam Buffer")

    Me Too!
    java.sql.SQLException: ORA-04031: unable to allocate 744 bytes of shared memory ("unknown object","sga heap","library cache")
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:114)
    at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
    at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:542)
    at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1311)
    at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(TTC7Protocol.java:595)
    at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:1600)
    at oracle.jdbc.driver.OracleStatement.doExecute(OracleStatement.java:1758)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1805)
    at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:410)
    Does this error pertain to memory leaks?

Maybe you are looking for

  • Web Service Proxy in OAF project

    Hi I am trying to create a Web Service proxy class that I can use to call a web service from a custom OAF page. I am doing this by right clicking on the OAF project (12i project using 10.1.3.3.0.3 of JDev with OAF ext) and choosing New -> Web Service

  • HT1349 I have an ipod shuffle. Never had one before. A friend synced my shuffle to her ipod. I want to add the songs to my computer and make cd's. Any way to do this?

    I have an ipod shuffle. Never had one before. A friend synced my shuffle to her ipod. I want to add the songs to my computer and make cd's. Any way to do this?

  • Images, CSS and p Tags

    I have a site I recently launched with Contribute and Dreamweaver.  I am using CSS to control the alignment and spacing of images. The problem I'm having is that I get strange rendering from pages created in Contribute because, by default, it wants t

  • Compressor 4 needed?

    I am reading about Compressor 4 now. I did not purchase it when I purchased Final Cut X. It appears that it does the same thing (Transcoding) that FCPX does when importing a clip. Is Compressor 4 needed if (as it appears to me) FCPX transcodes the cl

  • Execute query in ADF BC

    I'm using JDev 10.1.2, Struts, ADF BC. I have an 'input form from' a view that displays all the records. I click on Find and Execute to search for particular record it works fine too. But, if there are no records for the 'find', it doesn't display an