Pas de problème (pb), que du PowerBuilder (PB) ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 29-01-2008 11:15:01

cantin_jl  
Membre completement Geek
Lieu: 49120 Chemillé
Date d'inscription: 10-01-2007
Messages: 132
Pépites: 552
Banque: 0
Site web

[RESOLU] Gestion de la mémoire avec PB 10.5

Bonjour,

J'ai une fenêtre réduite en icône (iconetray) dans laquelle un timer lance une fonction qui effectue un retrieve d'un datastore déclaré en instance (de façon à éviter sa déclaration à chaque appel de la fonction) :

Code: pb

ids_ds.reset()
ll_nb = ids_ds.retrieve( )

//à la fin de la fonction
garbagecollect()


A noter que j'utilise une connexion oracle via le module natif O84 oracle 8/8i.

J'ai remarqué que la mémoire utilisée par mon executable grossissait régulièrement sans que je ne fasse quoi que ce soit.

Y-a-t-il un moyen d'optimiser la mémoire de powerbuilder?

Par la même occasion, y-a-t-il un moyen d'éviter la création du fichier sqlnet.log?

Merci

Dernière modification par cantin_jl (05-02-2008 10:44:12)


Les inventions qui ne sont pas connues ont toujours plus de censeurs que d'approbateurs

Hors ligne

 

#2 29-01-2008 11:40:33

JCZ  
Builder Power
Award: bf
Lieu: 75019 paris
Date d'inscription: 21-05-2007
Messages: 1724
Pépites: 496,453,703,213
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Gestion de la mémoire avec PB 10.5

Salut
les paramètres pour déterminer les informations de traçage ( SQLNET.LOG )  sont à entrer dans la fichier
ORANT\NET80\ADMIN\SQLNET.ORA
Je crois que si tu supprimes SQLNET.ORA --> pas de SQLNET.LOG


Face à l'agression, la puissance de l'intelligence

Hors ligne

 

#3 29-01-2008 12:48:54

cantin_jl  
Membre completement Geek
Lieu: 49120 Chemillé
Date d'inscription: 10-01-2007
Messages: 132
Pépites: 552
Banque: 0
Site web

Re: [RESOLU] Gestion de la mémoire avec PB 10.5

JCZ a écrit:

Salut
les paramètres pour déterminer les informations de traçage ( SQLNET.LOG )  sont à entrer dans la fichier
ORANT\NET80\ADMIN\SQLNET.ORA
Je crois que si tu supprimes SQLNET.ORA --> pas de SQLNET.LOG

Et non, malheureusement, cela ne suffit pas. Dans le chemin indiqué, je n'ai déjà que le fichier TNSNAME.ora...


Les inventions qui ne sont pas connues ont toujours plus de censeurs que d'approbateurs

Hors ligne

 

#4 29-01-2008 12:53:27

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Gestion de la mémoire avec PB 10.5

en principe, il y a un exemple dans le sous-dossier \sample

Comment diagnostiquer les problèmes de connection NET*8 ?

Pour info, l'exemple fourni :

Code: ora

# copyright (c) 1996 by the Oracle Corporation
# 
# NAME
#   sqlnet.ora
# FUNCTION
#   Oracle Network Client startup parameter file example
# NOTES
#   This file contains examples and instructions for defining all
#   Oracle Network Client parameters. It should be possible to read
#   this file and setup a Client by uncommenting parameter definitions
#   and substituting values. The comments should provide enough
#   explanation to enable a reasonable user to manage his TNS connections
#   without having to resort to 'real' documentation.
# SECTIONS
#   ONames Client
#   Namesctl
#   Native Naming Adpaters
#   ...
# MODIFIED
#    tclarke    05/26/00 - bug 515765
#    jtran      03/24/98 - add radius configuration
#    skanjila   06/06/97 - Correct default for Automatic_IPC
#    eminer     05/15/97 - Add the relevant onrsd parameters.
#    asriniva   04/23/97 - Merge with version from doc
#    ggilchri   03/31/97 - mods
#    bvasudev   02/07/97 - Change sqlnet.authentication_services documentation
#    bvasudev   11/25/96 - Merge sqlnet.ora transport related parameters
#    asriniva   11/12/96 - Revise with new OSS parameters.
#    asriniva   11/05/96 - Add ANO parameters.
# ____________________________________________________________________

# - ONames Client ----------------------------------------------------
#
#names.default_domain = world
#
#Syntax:  domain-name
#Default: NULL
#
# Indicates the domain from which the client most often requests names. When
# this parameter is set the default domain name (for example, US.ACME), the
# domain name will be automatically appended to any unqualified name in an
# ONAmes request (query, register, deregister, etc). Any name which contains
# an unescaped dot ('.') will not have the default domain appended. Simple
# names may be qualified with a trailing dot (for example 'rootserver.').
#
#
#names.initial_retry_timeout = 30
#
#Syntax:  1-600 seconds
#Default: 15 (OSD)
#
# Determines how long a client will wait for a response from a Names Server
# before reiterating the request to the next server in the preferred_servers
# list.
#
#
#names.max_open_connections = 3
#
#Syntax:  3-64
#Default: ADDRS in preferred_servers
#
# Determines how many connections an ONames client may have open at one time.
# Clients will ordinarily keep connections to servers open once they are
# established until the operation (or session in namesctl) is complete. A
# connection will be opened whenever needed, and if the maximum would be 
# exceeded the least recently used connection will be closed.
#
#
#names.message_pool_start_size = 10
#
#Syntax:  3-256
#Default: 10
#
# Determines the initial number of messages allocated in the client's message
# pool. This pool provides the client with pre-allocated messages to be used
# for requests to ONames servers. Messages which are in the pool and unused
# may be reused. If a message is needed and no free messages are available in
# the pool more will be allocated.
#
#
#names.preferred_servers = (address_list =
#  (address=(protocol=ipc)(key=n23))
#  (address=(protocol=tcp)(host=nineva)(port=1383))
#  (address=(protocol=tcp)(host=cicada)(port=1575))
# )
#
#Syntax:  ADDR_LIST
#Default: Well-Known (OSD)
#
# Specifies a list of ONames servers in the client's region; requests will be
# sent to each ADDRESS in the list until a response is recieved, or the list
# (and number of retries) is exhausted.
#
# Addresses of the following form specify that messages to the ONames server
# should use Oracle Remote Operations (RPC):
#
#     (description = 
#       (address=(protocol=tcp)(host=nineva)(port=1383))
#       (connect_data=(rpc=on))
#     )
#
#
#
#names.request_retries = 2
#
#Syntax:  1-5
#Default: 1
#
# Specifies the number of times the client should try each server in the list
# of preferred_servers before allowing the operation to fail.
#
#
#names.directory_path
#
#Syntax:  <adapter-name>
#Default: TNSNAMES,ONAMES,HOSTNAME
#
# Sets the (ordered) list of naming adaptors to use in resolving a name.
# The default is as shown for 3.0.2 of sqlnet onwards. The default was
# (TNSNAMES, ONAMES) before that. The value can be presented without
# parentheses if only a single entry is being specified. The parameter is
# recognized from version 2.3.2 of sqlnet onward. Acceptable values include: 
#  TNSNAMES -- tnsnames.ora lookup
#  ONAMES   -- Oracle Names
#  HOSTNAME -- use the hostname (or an alias of the hostname)
#  NIS      -- NIS (also known as "yp")
#  CDS      -- OSF DCE's Cell Directory Service
#  NDS      -- Novell's Netware Directory Service
#
# - Client Cache (ONRSD) ---------------------------------------------
#names.addresses = (ADDRESS=(PROTOCOL=IPC)(KEY=ONAMES))
#
#Syntax:  ADDR
#Default: (ADDRESS=(PROTOCOL=IPC)(KEY=ONAMES))
#
# Address on which the client cache listens (is available to clients).
# Any valid TNS address is allowed. The default should be used if at
# all possible; clients have this entry hardwired as the first line
# of their server-list file (sdns.ora). If the address is set to a
# non-default value the client's preferred_servers parameter should
# be set to include the client-cache address first.
#
#
#names.authority_required = False
#
#Syntax:  T/F
#Default: False
#
# Determines whether system querys (for the root etc) require Authoritative
# answers. 
#
#
#names.auto_refresh_expire = 259200
#
#Syntax:  Number of seconds, 60-1209600
#Default: 259200
#
# This is the amount of time (in seconds) the server will cache the addresses
# of servers listed in server-list file (sdns.ora). When this time expires the
# server will issue another query to the servers in those regions to refresh
# the data.
#
#
#names.auto_refresh_retry = 180
#
#Syntax:  Number of seconds, 60-3600
#Default: sec.  180
#
# This set how often the server will retry when the auto_refresh query fails.
#
#
#names.cache_checkpoint_file = cache.ckp
#
#Syntax:  filename
#Default: $ORACLE_HOME/network/names/ckpcch.ora
#
# Specifies the name of the operating system file to which the Names Server
# writes its foreign data cache.
#
#
#names.cache_checkpoint_interval = 7200
#
#Syntax:  Number of seconds, 10-259200
#Default: 0 (off)
#
# Indicates the interval at which a Names Server writes a checkpoint of its
# data cache to the checkpoint file. 
#
#
#names.default_forwarders=
# (FORWARDER_LIST=
#    (FORWARDER=
#       (NAME= rootserv1.world)
#       (ADDRESS=(PROTOCOL=tcp)(PORT=42100)(HOST=roothost))))
#
#Syntax:  Name-Value/address_list
#Default: NULL
#
# A list (in NV form) of the addresses of other servers which should be used to 
# forward querys while in default_forwarder (slave) mode. NAME is the global
# names for the server to which forwards whould be directed, and ADDRESS is its
# address.
#
#
#names.default_forwarders_only = True
#
#Syntax:  T/F
#Default: False
#
# When set to true this server will use the servers listed in default_forwarders
# to forward all operations which involve data in foreign regions. Otherwise it
# will use the servers defined in the server-list file (sdns.ora) in addition
# to any defined in the default_forwarders parameter.
#
#
#names.log_directory = /oracle/network/log
#
#Syntax:  directory
#Default: $ORACLE_HOME/network/log
#
# Indicates the name of the directory where the log file for Names Server
# operational events are written.
#
#
#names.log_file = names.log
#
#Syntax:  filename
#Default: names.log
#
# The name of the output file to which Names Server operational events are
# written.
#
#names.log_stats_interval = 3600
#
#Syntax:  Number of seconds, 10-ub4max
#Default: sec.  0 (off)
#
#Specifies the number of seconds between statistical entries in log file. 
#
#names.log_unique = False
#
#Syntax:  T/F
#Default: False
#
# If set to true the server will guarantee that the log file will have a unique
# name which will not overwrite any existing files (note that log files are
# appended to, so log information will not be lost if log_unique is not true).
#
#names.max_open_connections = 10
#
#Syntax:  3-64
#Default: 10
#
# Specifies the number of connections that the Names Server can have open at any
# given time. The value is generated as the value 10 or the sum of one
# connection for listening, five for clients, plus one for each foreign domain
# defined in the local administrative region, whichever is greater. Any
# operation which requires the server to open a network connection will use
# an already open connection if it is available, or will open a connection
# if not. Higher settings will save time and cost network resources; lower
# settings save network resources, cost time.
#
#
#names.max_reforwards = 2
#
#Syntax:  1-15
#Default: 2
#
# The maximum number of times the server will attempt to forward a certain
# operation.
#
#
#names.message_pool_start_size = 24
#
#Syntax:  3-256
#Default: 10
#
# Determines the initial number of messages allocated in the server's message
# pool. This pool provides the server with pre-allocated messages to be used
# for incoming or outgoing messages (forwards). Messages which are in the pool
# and unused may be reused. If a message is needed and no free messages are
# available in the pool more will be allocated.
#
#
#names.no_modify_requests = False
#
#Syntax:  T/F
#Default: False
#
# If set to true, the server will refuse any operations which modify the
# data in its region (it will still save foreign info in the cache which is 
# returned from foreign querys).
#
#
#names.password = 625926683431AA55
#
#Syntax:  encrypted string
#Default: NULL
#
# If set the server will require that the user provide a password in his
# namesctl session (either with sqlnet.ora:namesctl.server_password or 'set
# password') in order to do 'sensitive' operations, like stop, restart, reload.
# This parameter is generally set in encrypted form, so it can not be set
# manually.
#
#names.reset_stats_interval = 3600
#
#Syntax:  10-ub4max
#Default: 0 (off)
#
# Specifies the number of seconds during which the statistics collected by the
# Names Servers should accumulate. At the frequency specified, they are reset
# to zero. The default value of 0 means never reset statistics. 
#
#
#names.trace_directory = /oracle/network/trace
#
#Syntax:  directory
#Default: $ORACLE_HOME/network/trace
#
# Indicates the name of the directory to which trace files from a Names Server
# trace session are written. 
#
#
#names.trace_file = names.trc
#
#Syntax:  filename
#Default: names.trc
#
# Indicates the name of the output file from a Names Server trace session.
#
#
#names.trace_func # NA
#
#Syntax:  T/F
#Default: False
#
# Internal mechanism to control tracing by function name.
#
#
#names.trace_level = ADMIN
#
#Syntax:  T/F
#Default: False
#
#Syntax:  {OFF,USER,ADMIN,0-16}
#Default: OFF (0)
#
# Indicates the level at which the Names Server is to be traced.
# Available Values:
#  0 or OFF - No trace output
#  4 or USER - User trace information
#  10 or ADMIN - Administration trace information
#  16 or SUPPORT - WorldWide Customer Support trace information
#
#
#names.trace_mask = (200,201,202,203,205,206,207)
#
#Syntax:  list of numbers
#Default: NULL
#
# Internal mechanism to control trace behavior. 
#
#
#names.trace_unique = True
#
#Syntax:  T/F
#Default: False
#
# Indicates whether each trace file has a unique name, allowing multiple trace
# files to coexist. If the value is set to ON, a process identifier is appended
# to the name of each trace file generated. 
#
#
# - Namesctl ---------------------------------------------------------
#
#namesctl.trace_directory = /oracle/network/trace
#
#Syntax:  directory
#Default: $ON/trace
#
# Indicates the name of the directory to which trace files from a namesctl
# trace session are written. 
#
#
#namesctl.trace_file = namesctl.trc
#
#Syntax:  filename
#Default: namesctl.trc
#
# Indicates the name of the output file from a namesctl trace session.
#
#
#namesctl.trace_func # NA
#
#Syntax:  word list
#Default: NULL
#
# Internal mechanism to control tracing by function name.
#
#
#namesctl.trace_level = ADMIN
#
#Syntax:  {OFF,USER,ADMIN,0-16}
#Default: OFF (0)
#
# Indicates the level at which the namesctl is to be traced.
# Available Values:
#  0 or OFF - No trace output
#  4 or USER - User trace information
#  10 or ADMIN - Administration trace information
#  16 or SUPPORT - WorldWide Customer Support trace information
#
#
#namesctl.trace_mask # NA
#
#Syntax:  number list
#Default: NULL
#
# Internal mechanism to control trace behavior. 
#
#
#namesctl.trace_unique = True
#
#Syntax:  T/F
#Default: False
#
# Indicates whether each trace file has a unique name, allowing multiple trace
# files to coexist. If the value is set to ON, a process identifier is appended
# to the name of each trace file generated. 
# 
#
#namesctl.no_initial_server = False
#
#Syntax:  T/F
#Default: False
#
# If set to TRUE namesctl will suppress any error messages when namesctl is
# unable to connect to a default names server.
#
#
#namesctl.internal_use = True
#
#Syntax:  T/F
#Default: False
#
# If set to true namesctl will enable a set of internal undocumented commands.
# All internal commands are preceded by an underscore ('_') in order to
# distinguish them as internal. Without going into details, the commands
# enabled are:
#
#     _add_data              _create_name           _delete_name           
#     _full_status           _ireplace_data         _newttl_name           
#     _pause                 _remove_data           _rename_name           
#     _replace_data          _start                 _walk*                 
#
# There are also a set of names server variables which may be set when
# namesctl is in internal mode:
#
#     _authority_required             _auto_refresh*                  
#     _cache_checkpoint_interval      _cache_dump                     
#     _default_autorefresh_expire     _default_autorefresh_retry      
#     _default_forwarders_only        _forwarding_desired             
#     _max_reforwards                 _modify_ops_enabled             
#     _next_cache_checkpoint          _next_cache_flush               
#     _next_stat_log                  _next_stat_reset                
#     _reload                         _request_delay                  
#     _restart                        _shutdown                       
#
#
#namesctl.noconfirm = True
#
#Syntax:  T/F
#Default: False
#
# When set to TRUE namesctl will suppress the confirmation prompt when 
# sensitive operations (stop, restart, reload) are requested. This is
# quite helpful when using namesctl scripts.
#
#
#namesctl.server_password = mangler
#
#Syntax:  string
#Default: NULL
#
# Automatically sets the password for the names server in order to perform
# sensitive operations (stop, restart, reload). The password may also be
# set manually during a namesctl session using 'set password'.
#
#
#namesctl.internal_encrypt_password = False
#
#Syntax:  T/F
#Default: True
#
# When set to TRUE namesctl will not encrypt the password when it is sent to
# the names server. This would enable an unencrypted password to be set in
# names.ora:names.server_password
#
# - Native Naming Adpaters -------------------------------------------
#
#names.dce.prefix = /.:/subsys/oracle/names
#
#Syntax:  DCE cell name
#Default: /.:/subsys/oracle/names
#
#Specifies the DCE cell (prefix) to use for name lookup.
#
#
#names.nds.name_context = personnel.acme
#
#Syntax:  NDS name
#Default: (OSD?)
#
# Specifies the default NDS name context in which to look for the name to
# be resolved.
#
#
#names.nis.meta_map # NA
#
# Syntax:  filename
# Default: sqlnet.maps
#
# Specifies the file to be used to map NIS attributes to an NIS mapname.
# Currently unused.

# - Advanced Networking Option Authentication Adapters ----------------

#sqlnet.authentication_services
#
# Syntax: A single value or a list from {beq, none, all, kerberos5,
#    cybersafe, securid, identitx}
# Default: NONE
#
# Enables one or more authentication services.  To enable
# authentication via the Oracle Security Server, use (beq, oss).  If
# the Advanced Networking Option has been installed with Kerberos5
# support, using (beq, kerberos5) would enable authentication via
# Kerberos.
#
#sqlnet.authentication_services=(beq, oss)
 
##
## Parmeters used with Kerberos adapter.
##

#sqlnet.kerberos5_cc_name
#
# Syntax: Any valid pathname.
# Default: /tmp/krb5cc_<uid>
#
# The Kerberos credential cache pathname.
#
#sqlnet.kerberos5_cc_name=/tmp/mycc

#sqlnet.kerberos5_clockskew
#
# Syntax: Any positive integer.
# Default: 300
#
# The acceptable difference in the number of seconds between when a
# credential was sent and when it was received.
#
#sqlnet.kerberos5_clockskew=600

#sqlnet.kerberos5_conf
#
# Syntax: Any valid pathname.
# Default: /krb5/krb.conf
#
# The Kerberos configuration pathname.
#
#sqlnet.kerberos5_conf=/tmp/mykrb.conf

#sqlnet.kerberos5_realms
#
# Syntax: Any valid pathname
# Default: /krb5/krb.realms
#
# The Kerberos host name to realm translation file.
#
#sqlnet.kerberos5_realms=/tmp/mykrb.realms

#sqlnet.kerberos5_keytab
#
# Syntax: Any valid pathname.
# Default: /etc/v5srvtab
#
# The Kerberos secret key file.
#
#sqlnet.kerberos5_keytab=/tmp/myv5srvtab

#sqlnet.authentication_kerberos5_service
#
# Syntax: Any string.
# Default: A default is not provided.
#
# The Kerberos service name.
#
#sqlnet.authentication_kerberos5_service=acme

##
## Parmeters used with CyberSAFE adapter.
##

#sqlnet.authentication_gssapi_service
#
# Syntax: A correctly formatted service principal string.
# Default: A default is not provided.
#
# The CyberSAFE service principal
#
#sqlnet.authentication_gssapi_service=acme/asriniva.us.oracle.com@US.ORACLE.COM
 
##
## Parmeters used with Identix adapter.
##

#sqlnet.identix_fingerprint_method
#
# Syntax: Must be oracle.
# Default: A default is not provided.
#
# The Identix authentication server method
#
#sqlnet.identix_fingerprint_method=oracle

#sqlnet.identix_fingerprint_database
#
# Syntax: Any string.
# Default: A default is not provided.
#
# The Identix authentication server TNS alias
#
#sqlnet.identix_fingerprint_database=ofm

#sqlnet.identix_fingerprint_database_user
#
# Syntax: Any string
# Default: A default is not provided.
#
# The Identix authentication service well known username.
#
#sqlnet.identix_fingerprint_database_user=ofm_client

#sqlnet.identix_fingerprint_database_password
#
# Syntax: Any string
# Default: A default is not provided.
#
# The Identix authentication service well known password.
#
#sqlnet.identix_fingerprint_database_password=ofm_client

# - Advanced Networking Option - Radius Adapter
# Need to specify the location of the Radius server
#sqlnet.radius_authentication = localhost

# Need to specify the port address of the Radius server
#sqlnet.radius_authentication_port = 1654

# If your radius server support accounting, you can enable it
#sqlnet.radius_accounting = off

# Turn on/off challenge response
#sqlnet.radius_challenge_response = off

# Keyword to request a challenge from Radius server.  
# If you use activcard, enter activcard

# If you use something else, enter challenge
#sqlnet.radius_challenge_keyword = challenge

# Enter the name of the client interface you want to use for challenge response
#sqlnet.radius_authentication_interface = DefaultRadiusInterface

# Where is the secret file locate
#sqlnet.radius_secret = $ORACLE_HOME/security/radius.key
 

# - Advanced Networking Option Network Security -------------------------

#sqlnet.crypto_checksum_client 
#sqlnet.crypto_checksum_server 
#sqlnet.encryption_client 
#sqlnet.encryption_server 
#
# These four parameters are used to specify whether a service (e.g. 
# crypto-checksumming or encryption) should be active: 
#
# Each of the above parameters defaults to ACCEPTED.
#
# Each of the above parameters can have one of four possible values: 
# 
# value    meaning 
#
# ACCEPTED  The service will be active if the other side of the 
#    connection specifies "REQUESTED" or REQUIRED" and 
#    there is a compatible algorithm available on the other 
#    side; it will be inactive otherwise. 
#
# REJECTED  The service must not be active, and the connection 
#    will fail if the other side specifies "REQUIRED". 
#
# REQUESTED  The service will be active if the other side specifies 
#    "ACCEPTED", "REQUESTED", or "REQUIRED" and there is a 
#    compatible algorithm available on the other side; it 
#    will be inactive otherwise. 
#
# REQUIRED  The service must be active, and the connection will 
#    fail if the other side specifies "REJECTED" or if there 
#    is no compatible algorithm on the other side. 
#
#sqlnet.crypto_checksum_types_client 
#sqlnet.crypto_checksum_types_server 
#sqlnet.encryption_types_client 
#sqlnet.encryption_types_server 
#
# These parameters control which algorithms will be made available for 
# each service on each end of a connection: 
#
# The value of each of these parameters can be either a parenthesized 
# list of algorithm names separated by commas or a single algorithm 
# name.
#
# Encryption types can be: RC4_40, RC4_56, RC4_128, DES, DES40
#
# Encryption defaults to all the algorithms.
#
# Crypto checksum types can be: MD5
#
# Crypto checksum defaults to MD5.
#
#sqlnet.crypto_seed ="4fhfguweotcadsfdsafjkdsfqp5f201p45mxskdlfdasf"
#sqlnet.crypto_checksum_server = required 
#sqlnet.encryption_server = required

# - Oracle Security Server ---------------------------------------------

#oss.source.my_wallet
#
# Syntax: A properly formatted NLNV list.
# Default: Platform specific.  Unix: $HOME/oracle/oss
#
# The method for retrieving and storing my identity.  
#
#oss.source.my_wallet
#   =(source
#       =(method=file)
#        (method_data=/dve/asriniva/oss/wallet)
#     ) 

#oss.source.location
#
# Syntax: A properly formatted NLNV list.
# Default: Oracle method, oracle_security_service/oracle_security_service@oss
#
# The method for retrieving encrypted private keys.
#
#oss.source.location
#   =(source
#       =(method=oracle) 
#        (method_data= 
#           (sqlnet_address=andreoss)
#        ) 
#    ) 

# - Sqlnet(v2.x) and Net3.0 Client ------------------------------------------

#
# In the following descriptions, the term "client program" could mean 
# either sqlplus, svrmgrl or any other OCI programs written by users
# 
###########################
#trace_level_client = ADMIN
###########################
#
#Possible values: {OFF,USER,ADMIN,0-16}
#Default:         OFF (0)
#
#Purpose: Indicates the level at which the client program 
#         is to be traced. 
# Available Values:
#       0 or OFF - No Trace output
#  4 or USER - User trace information
#   10 or ADMIN - Administration trace information
#  16 or SUPPORT - Worldwide Customer Support trace information
#
#Supported since:  v2.0
#
###############################################
#trace_directory_client = /oracle/network/trace
###############################################
#
#Possible values: Any valid directory path with write permission
#Default: $ORACLE_HOME/network/trace  ($ORACLE_HOME=/oracle at customer 
#         site)
#
#Purpose: Indicates the name of the directory to which trace files from 
#         the client execution are written.
#
#Supported since: v2.0
#
###################################################
#trace_file_client =  /oracle/network/trace/cli.trc
###################################################
#
#Possible values: Any valid file name 
#Default:    $ORACLE_HOME/network/trace/cli.trc ($ORACLE_HOME = 
#      /oracle at customer site)
#
#Purpose: Indicates the name of the file to which the execution trace 
#         of the client is written to. 
#
#Supported since: v2.0
#
###########################
#trace_unique_client = ON
###########################
#
#Possible values: {ON, OFF}
#Default: OFF
#
#Purpose: Used to make each client trace file have a unique name to 
#    prevent each trace file from being overwritten by successive 
#    runs of the client program
#
#Supported since: v2.0
#
###########################################
#log_directory_client = /oracle/network/log
###########################################
#
#Possible values: Any valid directory pathname
#Default: $ORACLE_HOME/network/log  ($ORACLE_HOME = /oracle at customer
#    site)
#
#Purpose: Indicates the name of the directory to which the client log file
#    is written to.
#
#
#Supported since: v2.0
#
################
#log_file_client = /oracle/network/log/sqlnet.log
################
#
#Possible values: This is a default value, u cannot change this
#Default: $ORACLE_HOME/network/log/sqlnet.log  ($ORACLE_HOME=/oracle in 
#         customer site)
#
#Purpose: Indicates the name of the log file from a client program
#
#Supported since: v2.0
#
#############################################
#log_directory_server = /oracle/network/trace
#############################################
#
#Possible values: Any valid diretcory path with write permission
#Default: $ORACLE_HOME/network/trace ( $ORACLE_HOME=/oracle at customer 
#    site)
#
#Purpose: Indicates the name of the directory to which log files from the 
#     server are written
#
#Supported since:  v2.0
#
###############################################
#trace_directory_server = /oracle/network/trace
###############################################
#
#Possible values: Any valid directory path with write permission
#Default: $ORACLE_HOME/network_trace ( $ORACLE_HOME=/oracle at customer 
#    site)
#
#Purpose: Indicates the name of the directory to which trace files from 
#         the server are written 
#
#Supported since:  v2.0
#
#######################################################
#trace_file_server = /orace/network/trace/svr_<pid>.trc
#######################################################
#
#Possible values: Any valid filename
#Default: $ORACLE_HOME/network/trace/svr_<pid>.trc where <pid? stands for 
#         the process id of the server on UNIX systems 
#
#Purpose: Indicates the name of the file to which the execution trace of 
#         the server program is written to. 
#
#Supported since: v2.0
#
###########################
#trace_level_server = ADMIN
###########################
#
#Possible values: {OFF,USER,ADMIN,0-16}
#Default:         OFF (0)
#
#Purpose: Indicates the level at which the server program
#         is to be traced.
# Available Values:
#       0 or OFF - No Trace output
#       4 or USER - User trace information
#       10 or ADMIN - Administration trace information
#       16 or SUPPORT - Worldwide Customer Support trace information
#
#Supported since: v2.0
#
##########################
#use_dedicated_server = ON
##########################
#
#Possible values: {OFF,ON}
#Default:     OFF
#
#Purpose: Forces the listener to spawn a dedicated server process for 
#    sessions from this client program. 
#
#Supported since: v2.0
#
################
#use_cman = TRUE
################
#
#Possible values: {TRUE, FALSE}
#Default:    FALSE
#
#Purpose: 
#
#Supported since: v3.0
#
################################################
#tnsping.trace_directory = /oracle/network/trace
################################################
#
#Possible values: Any valid directory pathname
#Default: $ORACLE_HOME/network/trace ($ORACLE_HOME=/oracle at customer 
#    site)
#
#Purpose: Indicates the directory to which the execution trace from
#    the tnsping program is to be written to.
#
#Supported since: v2.0
#
############################
#tnsping.trace_level = ADMIN    
############################
#
#Possible values: {OFF,USER,ADMIN,0-16}
#Default:         OFF (0)
#
#Purpose: Indicates the level at which the server program
#         is to be traced.
# Available Values:
#       0 or OFF - No Trace output
#       4 or USER - User trace information
#       10 or ADMIN - Administration trace information
#       16 or SUPPORT - Worldwide Customer Support trace information
#
#
#Supported since: v2.0
#
########################
#sqlnet.expire_time = 10
########################
#
#Possible values: 0-any valid positive integer! (in minutes)
#Default: 0 minutes 
#Recommended value: 10 minutes
#
#Purpose: Indicates the time interval to send a probe to verify the 
#    client session is alive (this is used to reclaim watseful 
#    resources on a dead client)
#
#Supported since: v2.1
#
#######################################
#sqlnet.client_registration = <unique_id>
#######################################
#
#Possible values: 
#Default:     OFF 
#
#Purpose: Sets a unique identifier for the client machine. This 
#    identifier is then passed to the listener with any connection 
#    request and will be included in the Audit Trail. The identifier 
#    can be any alphanumeric string up to 128 characters long.
#
#Supported since: v2.3.2
#
######################
#bequeath_detach = YES
######################
#
#Possible values: {YES,NO}
#Default:         NO
#
#Purpose: Turns off signal handling on UNIX systems. If signal handling 
#    were not turned off and if client programs written by users make 
#    use of signal handling they could interfere with Sqlnet/Net3. 
#
#Supported since: v2.3.3 
#
####################
#automatic_ipc = OFF
####################
#
#Possible values: {ON,OFF}
#Default: OFF
#
#Purpose: Force a session to use or not to use IPC addresses on the 
#    client's node. 
#
#Supported since: v2.0
#
####################
#disable_oob = ON
####################
#
#Possible values: {ON,OFF}
#Default: OFF
#
#Purpose: If the underlying transport protocol (TCP, DECnet,...) does
#         not support Out-of-band breaks, then disable out-of-band
#    breaks
#
#Supported since: v2.0
#

N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#5 29-01-2008 13:16:31

cantin_jl  
Membre completement Geek
Lieu: 49120 Chemillé
Date d'inscription: 10-01-2007
Messages: 132
Pépites: 552
Banque: 0
Site web

Re: [RESOLU] Gestion de la mémoire avec PB 10.5

J'ai bien vu le fichier dans C:\oracle\ora81\network\ADMIN\SAMPLE. N'étant placé qu'à cet endroit, il ne devrait pas y avoir de sqlnet.log de généré, non?


Les inventions qui ne sont pas connues ont toujours plus de censeurs que d'approbateurs

Hors ligne

 

#6 29-01-2008 13:20:26

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Gestion de la mémoire avec PB 10.5

il me semble que s'il n'y a pas de SQLNET.ORA, il y a en cas d'erreurs un SQLNET.LOG màj dans le répertoire de l'EXE  (ou dans le répertoire des sources en mode dev)

essaye de voir les options de trace dans SQLNET.ORA et copie le dans ADMIN


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#7 30-01-2008 08:02:45

cantin_jl  
Membre completement Geek
Lieu: 49120 Chemillé
Date d'inscription: 10-01-2007
Messages: 132
Pépites: 552
Banque: 0
Site web

Re: [RESOLU] Gestion de la mémoire avec PB 10.5

ErAsORz a écrit:

il me semble que s'il n'y a pas de SQLNET.ORA, il y a en cas d'erreurs un SQLNET.LOG màj dans le répertoire de l'EXE  (ou dans le répertoire des sources en mode dev)

essaye de voir les options de trace dans SQLNET.ORA et copie le dans ADMIN

Merci, c'est ok pour le sqlnet.log mais personne n'a une idée pour la gestion de la mémoire?


Les inventions qui ne sont pas connues ont toujours plus de censeurs que d'approbateurs

Hors ligne

 

#8 30-01-2008 08:12:29

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Gestion de la mémoire avec PB 10.5

cantin_jl a écrit:

Merci, c'est ok pour le sqlnet.log mais personne n'a une idée pour la gestion de la mémoire?

A part faire un DESTROY de la datastore quand tu n'en a plus besoin, je ne vois pas


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#9 30-01-2008 11:22:29

cantin_jl  
Membre completement Geek
Lieu: 49120 Chemillé
Date d'inscription: 10-01-2007
Messages: 132
Pépites: 552
Banque: 0
Site web

Re: [RESOLU] Gestion de la mémoire avec PB 10.5

foon a écrit:

cantin_jl a écrit:

Merci, c'est ok pour le sqlnet.log mais personne n'a une idée pour la gestion de la mémoire?

A part faire un DESTROY de la datastore quand tu n'en a plus besoin, je ne vois pas

Je le fais à la fermeture de ma fenêtre car je ne déclare mon datastore qu'une fois en instance à l'ouverture de cette dernière.
En fait, j'ai l'impression qu'il me consomme de la mémoire à chaque passage dans le timer (qui appelle une fonction qui fait un reset puis un retrieve du datastore).

Suis-je assez clair ou dois-je vous montrer mon code?

Merci d'avance


Les inventions qui ne sont pas connues ont toujours plus de censeurs que d'approbateurs

Hors ligne

 

#10 30-01-2008 11:26:29

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4655
Pépites: 933
Banque: 2,147,483,647
Site web

Re: [RESOLU] Gestion de la mémoire avec PB 10.5

en fait, ce serait entre le reset et le retrieve que la memoire s'empilerait ?


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#11 30-01-2008 11:36:48

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Gestion de la mémoire avec PB 10.5

Regarde si tu as l'option "retrieve as needed" d'active sur ta datastore:

Extrait de l'aide PB:

If you call Reset when the Retrieve As Needed option is set, Reset will clear the rows that have been retrieved. However, because Retrieve As Needed is on, the DataWindow immediately retrieves the next set of rows. To prevent the rows from being retrieved, call DBCancel before calling Reset. If all the rows have been retrieved (the cursor has been closed and the RetrieveEnd event has occurred), then when Reset clears the DataWindow, it stays empty.


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#12 31-01-2008 16:01:58

cantin_jl  
Membre completement Geek
Lieu: 49120 Chemillé
Date d'inscription: 10-01-2007
Messages: 132
Pépites: 552
Banque: 0
Site web

Re: [RESOLU] Gestion de la mémoire avec PB 10.5

foon a écrit:

Regarde si tu as l'option "retrieve as needed" d'active sur ta datastore:

Extrait de l'aide PB:

If you call Reset when the Retrieve As Needed option is set, Reset will clear the rows that have been retrieved. However, because Retrieve As Needed is on, the DataWindow immediately retrieves the next set of rows. To prevent the rows from being retrieved, call DBCancel before calling Reset. If all the rows have been retrieved (the cursor has been closed and the RetrieveEnd event has occurred), then when Reset clears the DataWindow, it stays empty.

Je n'ai pas à m'ocupper de cette option car mon datastore est généré depuis une requête SQL...

Merci quand même


Les inventions qui ne sont pas connues ont toujours plus de censeurs que d'approbateurs

Hors ligne

 

#13 31-01-2008 16:17:07

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Gestion de la mémoire avec PB 10.5

Bonsoir,

Deux questions en passant:

- Ta fonction n'utilise que cette datastore, ou y a-t'il d'autres objets susceptibles d'intervenir dans le process?
- L'utilisation d'un timing object est-elle envisageable pour ton problème, ou te faut-il obligatoirement utiliser une fenêtre iconisée?


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#14 01-02-2008 08:46:08

cantin_jl  
Membre completement Geek
Lieu: 49120 Chemillé
Date d'inscription: 10-01-2007
Messages: 132
Pépites: 552
Banque: 0
Site web

Re: [RESOLU] Gestion de la mémoire avec PB 10.5

foon a écrit:

Bonsoir,

Deux questions en passant:

- Ta fonction n'utilise que cette datastore, ou y a-t'il d'autres objets susceptibles d'intervenir dans le process?
- L'utilisation d'un timing object est-elle envisageable pour ton problème, ou te faut-il obligatoirement utiliser une fenêtre iconisée?

Bien voila mon code :

dans le timer de ma fenêtre :
----------------------------------

Code: PB

//Vérification si message à traiter
wf_verif_trt_message( )



Détail de la fonction wf_verif_trt_message :
--------------------------------------------------

Code: PB

string        ls_ExpediteurEMail, ls_ExpediteurNomPrenom
string        ls_DestinataireNomPrenom, ls_DestinataireEMail
string        ls_sujet, ls_urgence, ls_Message, ls_ind_mas
string        ls_requete, ls_sqlrequete, ls_error, ls_date
string        ls_tab[], ls_vide[]
long          ll_nb, ll_i, ll_nb_dest, ll_j, ll_id_mes
boolean        lb_ok
st_destinataire  ls_tab_destinataire[], ls_vide_destinataire[]
uo_chaine      luo_chaine

//Datastore de travail déclaré dans le open de la fenêtre
ids_ds.reset()
ll_nb = ids_ds.retrieve( )

for ll_i = 1 to ll_nb  
  //Gestion Id_Mes
  ll_id_mes            = ids_ds.object.id_mes[ll_i]
  
  //Gestion date message
  ls_date              = string(ids_ds.object.dat[ll_i])
  
  //Gestion Expediteur
  ls_ExpediteurEMail      = ids_ds.object.exp_adr_mai[ll_i]
  ls_ExpediteurNomPrenom    = ids_ds.object.exp_nom[ll_i]

  //Gestion Sujet
  ls_sujet              = ids_ds.object.suj[ll_i]

  //Gestion priorité
  ls_urgence             = ids_ds.object.ind_urg[ll_i]

  //Gestion message
  ls_Message             = ids_ds.object.mes[ll_i]

  //Gestion du ou des destinataires
  ls_DestinataireNomPrenom  = ids_ds.object.des_nom[ll_i]
  ls_DestinataireEMail      = ids_ds.object.des_adr_mai[ll_i]
  
  //Gestion envoi en masse ou non
  ls_ind_mas            = ids_ds.object.ind_mas[ll_i]
  
  choose case ls_ind_mas
    case 'O'
      //Envoi en masse
      lb_ok = wf_envoi_mail(ls_ExpediteurNomPrenom, ls_ExpediteurEMail, ls_DestinataireNomPrenom, ls_DestinataireEMail, ls_sujet, ls_urgence, ls_Message)
      
    case else
      //Envoi individuel
      //On prépare un tableau d'envoi
      
      ls_tab_destinataire  = ls_vide_destinataire
      ls_tab           = ls_vide
      luo_chaine.Of_ParseToArray(ls_DestinataireNomPrenom, ';', ls_tab)
      ll_nb_dest = upperbound(ls_tab)
      for ll_j = 1 to ll_nb_dest
        ls_tab_destinataire[ll_j].dest_nom = ls_tab[ll_j]
      next
      ls_tab           = ls_vide
      luo_chaine.Of_ParseToArray(ls_DestinataireEMail, ';', ls_tab)
      for ll_j = 1 to ll_nb_dest
        ls_tab_destinataire[ll_j].dest_adr_mai  =  ls_tab[ll_j]
      next
      
      for ll_j = 1 to ll_nb_dest
        ls_DestinataireNomPrenom  = ls_tab_destinataire[ll_j].dest_nom
        ls_DestinataireEMail      = ls_tab_destinataire[ll_j].dest_adr_mai
        
        lb_ok = wf_envoi_mail(ls_ExpediteurNomPrenom, ls_ExpediteurEMail, ls_DestinataireNomPrenom, ls_DestinataireEMail, ls_sujet, ls_urgence, ls_Message)
      next
      
  end choose
  
  //Gestion indicateur de traitement du message
  if lb_ok then
    wf_maj_ind_trt(ll_id_mes)
  end if
next

//Libération de la mémoire
garbagecollect()



Déclaration du datastore dans le open de la fenêtre :
-------------------------------------------------------------

Code: PB

//Datastore qui contient les messages non traités à envoyer
ls_requete  = "select id_mes, dat, exp_nom, exp_adr_mai, suj, mes, ind_urg, ind_mas, "
ls_requete += " des_nom, des_adr_mai "
ls_requete += " from ser_mes "
ls_requete += " where ind_trt = 'N'"

ls_sqlrequete = sqlca.syntaxfromsql(ls_requete, '', ls_error)
ids_ds = create datastore
ids_ds.create(ls_sqlrequete, ls_error)
ids_ds.settransobject(sqlca)



Petite question :
Qu'entends-tu par timing object?


Les inventions qui ne sont pas connues ont toujours plus de censeurs que d'approbateurs

Hors ligne

 

#15 01-02-2008 09:08:28

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Gestion de la mémoire avec PB 10.5

cantin_jl a écrit:

Petite question :
Qu'entends-tu par timing object?

C'est un objet non visuel présentant un événement "timer" non lié à une fenêtre.
C'est donc beaucoup moins gourmand en ressources mémoire.

Sinon, regardes si tu as toujours des fuites mémoires après avoir mis en commentaires les lignes
de ta fonction appelant la fonction wf_envoi_mail.
Ca vient peut-être de là? Tu utilises des objets ole dans cette fonction?


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#16 01-02-2008 12:29:38

cantin_jl  
Membre completement Geek
Lieu: 49120 Chemillé
Date d'inscription: 10-01-2007
Messages: 132
Pépites: 552
Banque: 0
Site web

Re: [RESOLU] Gestion de la mémoire avec PB 10.5

foon a écrit:

cantin_jl a écrit:

Petite question :
Qu'entends-tu par timing object?

C'est un objet non visuel présentant un événement "timer" non lié à une fenêtre.
C'est donc beaucoup moins gourmand en ressources mémoire.

Sinon, regardes si tu as toujours des fuites mémoires après avoir mis en commentaires les lignes
de ta fonction appelant la fonction wf_envoi_mail.
Ca vient peut-être de là? Tu utilises des objets ole dans cette fonction?

Je suis obligé de passer par une fenêtre car celle-ci sert de trace. Tous les envois sont tracés et présentés sous forme détaillée de façon à pouvoir les analyser si besoin est.

La fonction wf_envoi_mail n'est pas en cause pour le moment car même s'il n'y a pas de messages à traiter, j'ai des fuites ().
J'ai remarqué qu'en cliquant sur l'icône tray pour un agrandissement de la fenêtre puis en réduisant cette dernière, cela libère de la mémoire (qui recommence à s'incrémenter au fil du temps).

Détail :
                  -Au lanmenent de l'application en minimize (icônetray) : 18Mo en mémoire
                  -Après agrandissement puis réduction (en icônetray) : 848Ko en mémoire
                  -Après 3 secondes (12h15) : 3040Ko en mémoire (à la suite de celà, incrémentation au file du temps)
                  -A 13h30 : 3960Ko en mémoire

Quelle me...


Les inventions qui ne sont pas connues ont toujours plus de censeurs que d'approbateurs

Hors ligne

 

#17 01-02-2008 13:17:35

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Gestion de la mémoire avec PB 10.5

cantin_jl a écrit:

J'ai remarqué qu'en cliquant sur l'icône tray pour un agrandissement de la fenêtre puis en réduisant cette dernière, cela libère de la mémoire (qui recommence à s'incrémenter au fil du temps).

Ce phénomène de libération de mémoire par agrandissement/réduction de fenêtre est classique sous Windows (C'est l'OS qui prend le relais et nettoie la mémoire).  Chez mon client actuel, ils avaient envisagé d'utiliser cette "propriété" pour régler leurs problèmes de fuite mémoire, mais il faut avouer que ce n'est pas l'idéal: Les utilisateurs ont horreur de voir des fenêtres s'agrandir et se réduire toutes seules à intervalle régulier

Bon, pour ton problème, je pense qu'il va falloir que tu fasses un choix entre fuite mémoire et vitesse d'exécution:
Soit tu gardes le fonctionnement actuel (datastore en variable d'instance), soit tu déclares ta datastore dans ta fonction avec CREATE et DESTROY en début et fin de fonction.
Il faut savoir que depuis la V8 de PB, la gestion mémoire a été changée: PB garde en mémoire certains objets "détruits" afin de pouvoir les ré-afficher plus rapidement en cas d'appel fréquent (Il me semble que ceci a été mis en place pour gérer plus facilement les architectures N-tiers). Je te conseille donc de tester cette deuxième option afin de comparer avec l'actuelle (Sauvegarde quand même tes scripts actuels: il est possible que même le CREATE/DESTROY ne règle pas la question).
Après, j'avoue que je "sèche" un peu...


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#18 01-02-2008 15:03:33

cantin_jl  
Membre completement Geek
Lieu: 49120 Chemillé
Date d'inscription: 10-01-2007
Messages: 132
Pépites: 552
Banque: 0
Site web

Re: [RESOLU] Gestion de la mémoire avec PB 10.5

foon a écrit:

cantin_jl a écrit:

J'ai remarqué qu'en cliquant sur l'icône tray pour un agrandissement de la fenêtre puis en réduisant cette dernière, cela libère de la mémoire (qui recommence à s'incrémenter au fil du temps).

Ce phénomène de libération de mémoire par agrandissement/réduction de fenêtre est classique sous Windows (C'est l'OS qui prend le relais et nettoie la mémoire).  Chez mon client actuel, ils avaient envisagé d'utiliser cette "propriété" pour régler leurs problèmes de fuite mémoire, mais il faut avouer que ce n'est pas l'idéal: Les utilisateurs ont horreur de voir des fenêtres s'agrandir et se réduire toutes seules à intervalle régulier

Bon, pour ton problème, je pense qu'il va falloir que tu fasses un choix entre fuite mémoire et vitesse d'exécution:
Soit tu gardes le fonctionnement actuel (datastore en variable d'instance), soit tu déclares ta datastore dans ta fonction avec CREATE et DESTROY en début et fin de fonction.
Il faut savoir que depuis la V8 de PB, la gestion mémoire a été changée: PB garde en mémoire certains objets "détruits" afin de pouvoir les ré-afficher plus rapidement en cas d'appel fréquent (Il me semble que ceci a été mis en place pour gérer plus facilement les architectures N-tiers). Je te conseille donc de tester cette deuxième option afin de comparer avec l'actuelle (Sauvegarde quand même tes scripts actuels: il est possible que même le CREATE/DESTROY ne règle pas la question).
Après, j'avoue que je "sèche" un peu...

Merci pour ton idée, mais c'était mon code de départ. Et alors là, non seulement, j'avais mes problèmes de fuites (...) mais en plus il y avait une dégradation des temps de réponse (normal avec un create à chaque fois).

Merci de nouveau mais je pense que je vais utliser mon application avec ses problèmes de fuites. Est-ce à dire que PB est un outil vieillissant permettant de développer des applications incontinentes

J'espère au-moins que cette discussion aura eu le mérite de montrer un certain nombre de fonctions permettant "d'optimiser" la mémoire sous PowerBuilder (garbagecollect, create, destroy et autres).


Les inventions qui ne sont pas connues ont toujours plus de censeurs que d'approbateurs

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22