CiscoWorks LMS 4.0.1 High Memory Utilization on Windows 2K8 R2
Hi,
What causes LMS 4.1 to have high memory utilization?
I made a little batch
https://supportforums.cisco.com/docs/DOC-21031
It show what process in LMS is eating you RAM / Hogging the CPU.
I don't think resources are used very effectivly in LMS
I did have the impression that some virtual machines running LMS 3.2 actually performed better than real machines, as if the VMware saw it load all these java virtual machines and that it was 45 times the same thing only being used for a few % and therefore could be swapped to disk, leaving the resources to what was actually working in LMS.
What worries me more than the resources used is the gui per.formance.
Cheers,
Michel
Similar Messages
-
Hello There,
Issue: High Memory Utilization in Below Scenario. Pl. See the below configuration of Win 12 Server
Pl. see for committed memory bytes . m little bit confused that about committed memory
OS: Windows Server 2012
Memory: Total 24 GB Free:1.3 GB Committed:27.6 GB
App Configure: Three Hyper V Instances Configure For Lync Server 2013
Pls provide me solution on this issueVirtual memory system. Committed memory is the physical memory for which space has been reserved in the disk paging file. So, you are paging, which is quite common in virtual memory systems.
On a completely different topic. Lync is an application that works best on real cores. Most systems are configured by default to use hyperthreading. Hyperthreading increases the logical processor count on a system and logical processors
are treated equally. Since a hyperthread 'core' (logical processor) performs at a small fraction of a real core (logical processor), if you are running VMs that work best with real cores, it is best to change your BIOS on the Hyper-V host to disable
hyperthreading, sometimes called simultaneous multithreading (SMT).
. : | : . : | : . tim -
High memory utilization after few days - ciscoworks LMS 4.0.1
Hello,
I have the problem that our ciscoworks server gets out of memory after few days. The memory utilization is always getting higher an higher (above 95%). Sometimes it is only after 3 days and sometimes it is after 1 week. So it happens not regulary. Has anyone an idea what could be the problem? I have made an screenshot from the services which use a lot of memory. And at this time the memory utilization is getting higher and higher again....I think there is a problem with tomcat or dbsrv10.exe, there are also a lot of cwjava.exe running.
Kindly regards
David MayerHello,
I have the same problem. First time I've tried to upgrade memory from 8gb to 16gb but I am still experiencing same issues (Memory is running on 98%). I'm not sure exactly what process it is causing this issue, because when I've checked all proccesses from all users running on this server and count them there is no 15 gb at all. My guess is the same for tomcat server which is responsible for RME collector, or correct me if I'm wrong.
Do you have any idea what can cause this problem.
I've tried to upgrade then to Cisco works Prime lan management 4.1, but server went with same issues.
Thanks a lot -
ASA High Memory utilization and random lockouts
We have 2 ASA 5520's running Active/Standby with the cable based failover. At random times perhaps once our twice a week we will get calls that RA VPN users cannot connect, RA users connect with the Cisco VPN client. Also most often during this time we cannot telnet into the "primary" ASA, but we can "usually" access it via the ASDM where we will see that the memory utilization is in the upper 90% range and perhaps as high as 98% consistently. To help temporarily solve the issue we have to telnet to the "secondary" ASA which we can usually access via telnet and perform a "failover active" which will failover the primary and make the secondary become the active and vice versus. Has anyone seen this issue. I have opened up several TAC cases and have not had much help. Thanks in advance!
Hi Brandon,
it is important to know what version are running your ASAs [ie 7.0(4)] and to collect some log, you can set it to error level (logging buffered errors), with the logging standby, so all of the message should be replicated on the standby unit.
even the show crashinfo could give you useful info.
show crashinfo
: Saved_Crash
Thread Name: vpnfo_thread_msg (Old pc 0x00b47b80 ebp 0x01c60634)
You can check the caveats for you release from the cisco site, This link is for the 7.0(4)
http://www.cisco.com/en/US/docs/security/pix/pix70/release/notes/pix704rn.html#wp32426
It could be a known bug solved in newer image.
Here you can find useful info to perfom a zer o downtime upgrade.
http://www.cisco.com/en/US/docs/security/asa/asa72/configuration/guide/mswlicfg.html
Regards,
Marco. -
Hi,
We have a system(32GB RAM and 2 TB hard disk, Windows7,SQL SERVER 2008R2 enterprise 64 bit). Looks like whenever i run some query(even query result 50 records) on the database, the Memory utilization is very high(30 GB) in task manager. How can i control this
over usage? The memory setting is default in server properties(min 0 and max 2147483647).Hmm, just curios, do you really have EE installed on Windows 7???????
http://mssqlwiki.com/sqlwiki/sql-performance/basics-of-sql-server-memory-architecture/
Best Regards,Uri Dimant SQL Server MVP,
http://sqlblog.com/blogs/uri_dimant/
MS SQL optimization: MS SQL Development and Optimization
MS SQL Consulting:
Large scale of database and data cleansing
Remote DBA Services:
Improves MS SQL Database Performance
SQL Server Integration Services:
Business Intelligence -
High Memory utilization for a single project
Hi All,
I am facing one issue with one of the projects configured. We have endeca installed on a Windows server and there are multiple projects setup. I am observing that dgraph.exe for a single project is taking as much as 80% of memory on server. I do see that the project is receiving around 300 to 350 requests every day which is slightly higher than other projects. I am required to manually restart the project before business starts and that releases the memory. I am not able to identify whats causing this issue. Any ideas on how to troubleshoot the issue?
Any suggestions will be of great help..
Thank You,
SunilThe number of threads will not have any impact on memory usage, however, I agree with Saleh that this doesn't make any sense.
I would suggest the following:
Grab the stats page XML (http://[your server name]:[your port]/admin?op=stats).
Restart the dgraph and see how much memory is taken up on the initial load. Then, assuming the memory consumption is reasonable, issue a couple N=0, N=something queries to the index and track what's happening with how much memory is being taken up.
If you're still at a normal level, it seems like there must be some process or "bad query" that causes the memory to spike. A possible culprit might be found on the "most expensive queries" section of the stats page but it's possible it won't be there as that only tracks queries that have completed, not queries that are still in process or taking forever.
The only other explanation I can think of is a rogue "bulk export" query where a user is trying to (for example) export the entire index to excel or something like that. Does your application offer that functionality?
Regards,
Patrick Rafferty
Branchbird -
WAP4410N Memory Utilization Reporting 100%
My network management platform flags the WAP4410N as continuously reporting 100% memory utilization. I updated to the latest code(V2.0.4.2, but the problem persists. I confirmed with the software vendor that the MIB is actually reporting 100% utilization. Has anyone else seen this symptom?
Paul,
I haven't seen any case within the support center reporting high memory utilization consistently. If you are experiencing problems with 4410 then i would give the SBSC @ 1-866-606-1866 a call. If no problem persist then it's probably just a spike at which time all units will generally spike occasionally at 100%
Jasbryan -
LMS 4.2.3 Server high CPU Utilization
Hi All,
We are observing high CPU utilization on the lms server. tomcat is the process eating more than 1GB of the memory i checked from the task manager.
Server details:
device license : 100
windows server 2k8 R2, with 8gb physical memory.
anybody suggest what might be causing the issue.?? because of this performance reports were affected.
Regards,
ChannaHi Channa,
log into dbreader using the following::
http://servername : 1741/dbreader/dbreader.html
or
https:// servername : 443/dbreader/dbreader.html
user Id is DBA
Database Name is upm
password :: user defined (by default password is c2ky2k)
1. Here is the query to get the pollerwise managed MIBObjects:
"select count (*), PollerName from Poller_Details_Table a,Poller_Definition_Table b where a.PollerId = b.PollerId and b.Poller_State NOT IN (1) Group by b.PollerName;"
2. Here is the query to get the total mibobject count for the active pollers
“select count (*) from Poller_Details_Table a,Poller_Definition_Table b where a.PollerId =
b.PollerId and b.Poller_State NOT IN (1);”
Hope it will help
Thanks-
Afroz
***Ratings Encourages Contributors *** -
Windows 8.1 laptop running slow, high memory and disk utilization
When I restart my laptop its memory utilization is around 50%. If I run several programs(may be 2 or 3) like Internet browser and IDE like Netbeans my pc become very slow.
When I was working in my other laptop which runs Windows 7(with 4GB RAM) I never had such issue (I normally open heavy weight application simultaneously without any issue).
But right now I am unable to my work on my new laptop with Windows 8.1. Most of the time its Disk usage also become 100%.
My RAM is 4GB, Processor Intel Core i5 2.60GHz
I am a software developer and I have to meat the deadlines, but as for my slow pc lot of time wasting happening everyday. I don't want to study about how windows 8.1 work or investigating its issues everyday, instead just want to use it for my software development
purposes.
I went through some other questions in this forum, but those are not clear enough for me. I tried to connect online chat with ask desk, but no lick(always display there busy right now with other customers, I don't prefer phone calls)
So please help.Chitrangi
Install the WPT (windows Performance Toolkit) http://social.technet.microsoft.com/wiki/contents/articles/4847.install-the-windows-performance-toolkit-wpt.aspx ,
open a CMD prompt with administrative rights (right click it>run as admin) and run this command for 60 secs to capture the high HD usage:
xperf -on PROC_THREAD+LOADER+CSWITCH+FILENAME+FILE_IO+FILE_IO_INIT+DISK_IO+DISK_IO_INIT+DRIVERS+PROFILE -f kernel.etl -stackwalk Profile+CSwitch+DiskReadInit+DiskWriteInit+DiskFlushInit+FileCreate+FileCleanup+FileClose+FileRead+FileWrite -BufferSize 1024 -MaxBuffers 1024 -MaxFile 1024 -FileMode Circular && timeout -1 && xperf -d XperfSlowIOcir.etl*
When finished zip the trace and upload it to skydrive or another file sharing service and put a link to it in your next post. -
How to get alert for app server that experienced high memory and CPU utiliz
Hi
How to get alerts configured and turned u201Conu201D for the app server that experienced high memory and CPU utilization?
And let me know where we can check this?
Regards,
Nenihi,
Have you configured a Central Monitoring System (CEN)? This includes registering the agent on the CEN, starting it and configuring the Central Auto Reactions on CEN using RZ21 transaction.
[http://help.sap.com/saphelp_nw70ehp1/helpdata/en/48/05c80724d63836e10000000a42189b/frameset.htm|http://help.sap.com/saphelp_nw70ehp1/helpdata/en/48/05c80724d63836e10000000a42189b/frameset.htm]
Jansi -
Macbook pro EFI firmware 2.7 after upgrade memory utilization high
Hi,
My machine is locking under specific conditions:
Hardware Overview:
Model Name:
MacBook Pro
Model Identifier:
MacBookPro8,2
Processor Name:
Intel Core i7
Processor Speed:
2.4 GHz
Number of Processors:
1
Total Number of Cores:
4
L2 Cache (per Core):
256 KB
L3 Cache:
6 MB
Memory:
8 GB
Boot ROM Version:
MBP81.0047.B27
SMC Version (system):
1.69f3
System Version:
Mac OS X 10.7.3 (11D50b)
Kernel Version:
Darwin 11.3.0
Boot Volume:
Macintosh HD
After I have updated the EFI firmware to version 2.7 last week, I noticed that my memory utilization has gotten higher. Has anyone experience that?
Before the upgrade, even when I opened my Fusion VMware, I will still have at least 1-2GB available left but now I only left with 200MB available.
How do I troubleshoot? Regret that I upgraded the firmware.I have not notice that at all. I also use Fusion with XP, Vista, 7 and Mint and don't see any more RAM being used by OS X or the VMs.
-
Memory Utilization during XML Parsing - Response time is high
Slow response time while xml parsing is done.
Description of the problem:
During XML parsing, memory is used and discarded so frequently that garbage collection
is occurring multiple times per minute, impacting performance. In order to better
understand the source of the memory usage issue, we used JProbe Memory Debugger.
JProbe Memory Debugger was run in Aggregate mode in order to determine which classes
were using the most total or aggregate memory (the sum of the memory required
to instantiate not just a given object, but all the objects it uses.) The result
was that weblogic.apache. xerces.impl.xs.dom.DocumentImpl and weblogic.apache.xerces.jaxp
comprise 23.8% and 15.4%, respectively, of total memory on a heap of 121MB. In
additional tests, the larger the heap, the greater these percentages were.
This results in slow response time.
The following are the details of software and Hardware configurations used:
Server: weblogic 8.1
OS: Solaris 8
System Configuration: Sun Microsystems sun4u Sun Fire 6800
System clock frequency: 150 MHz
Memory size: 8192 Megabytes"Kris" <[email protected]> wrote in message news:40f2fcda$1@mktnews1...
Sorry, I overlooked it.
yes we do have 8 GB RAM. And as far as xml usage, we are parsing the xml to DOM
(including validation) and then applying transformation. But its the parsing stuff
which is eating the memory.1. Can you run JProbe to find out real CPU utilization/bottlenecks?
2. Apache Xerses implementation that is used in weblogic has a design
flaw that results in serialization of memory allocation by the transformer,
that makes it impossible to use for intense multithreaded transformations.
Consider using other transformers.
Regards,
Slava Imeshev
>
>
"Slava Imeshev" <[email protected]> wrote:
Please answer my questions.
Regards,
Slava Imeshev
"Krisna" <[email protected]> wrote in message news:40f299ae$1@mktnews1...
Thanks Slava for youe response. Coming back to response time, thisprocess is part
of a big task. So i cant really tell what response time i can allocatejust for
this piece alone. Might be, roughly it should be less than 0.4 seconds.what the
major concenr is the memory utilization by these packages. So whatmakes it to
use this kind of memory and whether its a known issue ?
"Slava Imeshev" <[email protected]> wrote:
"kris" <[email protected]> wrote in message news:40eaddce$1@mktnews1...
Slow response time while xml parsing is done.
Description of the problem:
During XML parsing, memory is used and discarded so frequently thatgarbage collection
is occurring multiple times per minute, impacting performance. In
order
to better
understand the source of the memory usage issue, we used JProbe
Memory
Debugger.
JProbe Memory Debugger was run in Aggregate mode in order to determinewhich classes
were using the most total or aggregate memory (the sum of the memoryrequired
to instantiate not just a given object, but all the objects it uses.)The result
was that weblogic.apache. xerces.impl.xs.dom.DocumentImpl and weblogic.apache.xerces.jaxp
comprise 23.8% and 15.4%, respectively, of total memory on a heap
of
121MB. In
additional tests, the larger the heap, the greater these percentageswere.
Large heap means longer garbage collections. Anyway, DOM is very heavy
on memory and you can not escape it. What's is your usage patternfor
XML
processing? Do you use XSL?
This results in slow response time.What do you consider as acceptable/inacceptable responce time?
The following are the details of software and Hardware configurationsused:
Server: weblogic 8.1
OS: Solaris 8
System Configuration: Sun Microsystems sun4u Sun Fire 6800
System clock frequency: 150 MHz
Memory size: 8192 MegabytesDoes this mean you got 8GB RAM on 150Mhz box?
Regards,
Slava Imeshev -
CiscoWorks LMS 3.1: HUM and Web access issue...
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin:0in;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}
Hi there,
I would like to seek your counsel with regards to the recent incident that we encountered with our CiscoWorks LMS 3.1 running on Solaris 10.
A few days ago, we received a few complains from our users that they were unable to view the pollers or contents of the TOP-N <CPU | Memory | Interface> Utilization on the HUM’s home page (see attached file, hum_homepage.jpg).
We (tech support guys) checked the pollers’ status and they’re all Active (see attached file, pollers.jpg); we notified our Administrators and requested for a copy of the HUMPortal.log (see attached file, humportal.zip).
The following day, while waiting for the HUMPortal.log, we received reports that users accessing the HUM home page are stuck with the message “loading…” on all TOP-N Utilization reports.
As we were about to re-queue our request from our administrators, we received reports (a few hours ago) that our CiscoWorks LMS is inaccessible via web browser.
We alerted our administrators and they attempted to restart the Daemon Manager (/etc/init.d/dmgmtd); they were able to successfully shut it down but took several attempts to start it up.
As they attempt to start up the Daemon Manager, they encountered the following error message:
# /etc/init.d/dmgtd start
Error: Daemon Management could not start. Trying again
Error: Unable to bind to port, please check port (42340) state and permissions.
Error: If the port is in use, please try starting Daemon Manager once it become free.
After several minutes passed, they were able to start up the Daemon Manager successfully although the CiscoWorks LMS is still inaccessible via web browser.
We requested for a copy of the “pdshow –brief” log and every daemon (as far as I know) seemed to be working fine but it never hurts to ask for help to verify my findings (see attached file, pdshow0818a.log).
As of the moment of this writing, we are still unable to access CiscoWorks LMS via web browser; any insight or suggestion on the next step to take in troubleshooting and eventually solving this problem is very much appreciated.The port 42340 issue is most likley not related to the HUM issue you described. The latest log entry you provided indicates "Possible reasons for 'No Data' in HUM Portlets could be either Poller is not configured, or Poller is deactivated, or Poller Failure has occurred, or Summarization job did not start." The error is repeated back to the beginning of the file dated Aug 14 16:39.
To focus on the HUM issue:
Did any change occur on or around the 14th that you are aware of?
Please provide some additional debugs:
1. Please enable debug for "UPMProcess"
Log files are stored here: #/var/adm/CSCOpx/log/#
- HUMPortal.log
- upm_summarization.log
- jrm.log
- upm_process.log
2. To set log levels:
*Health and Utilization Monitor > Admin > System Preferences*.
- Select Log Level Settings.
- Select the application module from the drop-down list.
- Select the Debug log level from the Logging Level drop-down list.
Thanks,
Nick -
Follow up on an old thread about memory utilization
This thread was active a few months ago, unfortunately its taken me until now
for me to have enough spare time to craft a response.
From: SMTP%"[email protected]" 3-SEP-1996 16:52:00.72
To: [email protected]
CC:
Subj: Re: memory utilization
As a general rule, I would agree that memory utilzation problems tend to be
developer-induced. I believe that is generally true for most development
environments. However, this developer was having a little trouble finding
out how NOT to induce them. After scouring the documentation for any
references to object destructors, or clearing memory, or garbage collection,
or freeing objects, or anything else we could think of, all we found was how
to clear the rows from an Array object. We did find some reference to
setting the object to NIL, but no indication that this was necessary for the
memory to be freed.
I believe the documentation, and probably some Tech-Notes, address the issue of
freeing memory.
Automatic memory management frees a memory object when no references to the
memory
object exist. Since references are the reason that a memory object lives,
removing
the references is the only way that memory objects can be freed. This is why the
manuals and Tech-Notes talk about setting references to NIL (I.E. freeing memory
in an automatic system is done by NILing references and not by calling freeing
routines.) This is not an absolute requirement (as you have probably noticed
that
most things are freed even without setting references to NIL) but it accelerates
the freeing of 'dead' objects and reduces the memory utilization because it
tends
to carry around less 'dead' objects.
It is my understanding that in this environment, the development tool
(Forte') claims to handle memory utilization and garbage collection for you.
If that is the case, then it is my opinion that it shoud be nearly
impossible for the developer to create memory-leakage problems without going
outside the tool and allocating the memory directly. If that is not the
case, then we should have destructor methods available to us so that we can
handle them correctly. I know when I am finished with an object, and I
would have no problem calling a "destroy" or "cleanup" method. In fact, I
would prefer that to just wondering if Forte' will take care of it for me.
It is actually quite easy to create memory leaks. Here are some examples:
Have a heap attribute in a service object. Keep inserting things into
the heap and never take them out (I.E. forgot to take them out). Since
service objects are always live, everything in the heap is also live.
Have an exception handler that catches exceptions and doesn't do
anything
with the error manager stack (I.E. it doesn't call task.ErrMgr.Clear).
If the handler is activated repeatedly in the same task, the stack of
exceptions will grow until you run out of memory or the task terminates
(task termination empties the error manager stack.)
It seems to me that this is a weakness in the tool that should be addressed.
Does anyone else have any opinions on this subject?
Actually, the implementation of the advanced features supported by the Forte
product
results in some complications in areas that can be hard to explain. Memory
management
happens to be one of the areas most effected. A precise explanation to a
non-deterministic process is not possible, but the following attempts to
explain the
source of the non-determinism.
o The ability to call from compiled C++ to interpreted TOOL and back
to compiled C++.
This single ability causes most of the strange effects mentioned in
this thread.
For C++ code the location of all variables local to a method is not
know
(I.E. C++ compilers can't tell you at run-time what is a variable
and what
isn't.) We use the pessimistic assumption that anything that looks
like a
reference to a memory object is a reference to a memory object. For
interpreted
TOOL code the interpreter has exact knowledge of what is a reference
and what
isn't. But the TOOL interpreter is itself a C++ method. This means
that any
any memory objects referenced by the interpreter during the
execution of TOOL
code could be stored in local variables in the interpreter. The TOOL
interpreter
runs until the TOOL code returns or the TOOL code calls into C++.
This means
that many levels of nested TOOL code can be the source of values
assigned to
local variables in the TOOL interpreter.
This is the complicated reason that answers the question: Why doesn't a
variable that is created and only used in a TOOL method that has
returned
get freed? It is likely that the variable is referenced by local
variables
in the TOOL interpreter method. This is also why setting the
variable to NIL
before returning doesn't seem to help. If the variable in question is a
Array than invoke Clear() on the Array seems to help, because even
though the
Array is still live the objects referenced by the Array have less
references.
The other common occurrence of this effect is in a TextData that
contains a
large string. In this case, invoking SetAllocatedSize(0) can be used
to NIL
the reference to the memory object that actually holds the sequence of
characters. Compositions of Arrays and TextData's (I.E. a Array of
TextData's
that all have large TextDatas.) can lead to even more problems.
When the TOOL code is turned into a compiled partition this effect
is not
noticed because the TOOL interpreter doesn't come into play and
things execute
the way most people expect. This is one area that we try to improve
upon, but it is complicated by the 15 different platforms, and thus
C++ compilers,
that we support. Changes that work on some machines behave
differently on other
machines. At this point in time, it occasionally still requires that
a TOOL
programmer actively address problems. Obviously we try to reduce
this need over
time.
o Automatic memory management for C++ with support for multi-processor
threads.
Supporting automatic memory management for C++ is something that is
not a very
common feature. It requires a coding standard that defines what is
acceptable and
what isn't. Additionally, supporting multi-processor threads adds
its own set of
complications. Luckily TOOL users are insulated from this because
the TOOL to C++
code generator knows the coding standard. In the end you are
impacted by the C++
compiler and possibly the differences that occur between different
compilers and/or
different processors (I.E. Intel X86 versus Alpha.) We have seen
applications that
had memory utilization differences of up to 2:1.
There are two primary sources of differences.
The first source is how compilers deal with dead assignments. The
typical TOOL
fragment that is being memory manager friendly might perform the
following:
temp : SomeObject = new;
... // Use someObject
temp = NIL;
return;
When this is translated to C++ it looks very similar in that temp
will be assigned the
value NULL. Most compilers are smart enough to notice that 'temp' is
never used again
because the method is going to return immediately. So they skip
setting 'temp' to NULL.
In this case it should be harmless that the statement was ignored
(see next example for a different variation.) In more
complicated examples that involve loops (especially long
lived event loops) a missed NIL assignment can lead to leaking the
memory object whose
reference didn't get set to NIL (incidentally this is the type of
problem that causes
the TOOL interpreter to leak references.)
The second source is a complicated interaction caused by history of
method invocations.
Consider the following:
Method A() invokes method B() which invokes method C().
Method C() allocates a temporary TextData, invokes
SetAllocatedSize(1000000)
does some more work and then returns.
Method B() returns.
Method A() now invokes method D().
Method D() allocates something that cause the memory manager to look
for memory objects to free.
Now, even though we have returned out of method C() we have starting
invoking
methods. This causes us to use re-use portions of the C++ stack used to
maintain the history of method invocation and space for local variables.
There is some probability that the reference to the 'temporary' TextData
will now be visible to the memory manager because it was not overwritten
by the invocation of D() or anything invoked by method D().
This example answers questions of the form: Why does setting a local
variable to
NIL and returning and then invoking task.Part.Os.RecoverMemory not
cause the
object referenced by the local variable to be freed?
In most cases these effects cause memory utilization to be slightly
higher
than expected (in well behaved cases it's less than 5%.) This is a small
price to pay for the advantages of automatic memory management.
An object-oriented programming style supported by automatic memory
management makes it
easy to extended existing objects or sets of objects by composition.
For example:
Method A() calls method B() to get the next record from the
database. Method B()
is used because we always get records, objects, of a certain
type from
method B() so that we can reuse code.
Method A() enters each row into a hash table so that it can
implement a cache
of the last N records seen.
Method A() returns the record to its caller.
With manual memory management there would have to be some interface
that allows
Method A() and/or the caller of A() to free the record. This
requires
that the programmer have a lot more knowledge about the
various projects
and classes that make up the application. If freeing doesn'
happen you
have a memory leak, if you free something while its still
being used the
results are unpredictable and most often fatal.
With automatic memory management, method A() can 'free' its
reference by removing
the reference from the hash table. The caller can 'free' its
reference by
either setting the reference to NIL or getting another
record and referring
to the new record instead of the old record.
Unfortunately, this convenience and power doesn't come for free. Consider
the following,
which comes from the Forte' run-time system:
A Window-class object is a very complex beast. It is composed of two
primary parts:
the UserWindow object which contains the variables declared by the
user, and the
Window object which contains the object representation of the window
created in
the window workshop. The UserWindow and the Window reference each
other. The Window
references the Menu and each Widget placed on the Window directly. A
compound Window
object, like a Panel, can also have objects place in itself. These
are typically
called the children. Each of the children also has to know the
identity of it's
Mom so they refer to there parent object. It should be reasonably
obvious that
starting from any object that make up the window any other object
can be found.
This means that if the memory manager finds a reference to any
object in the Window
it can also find all other objects in the window. Now if a reference
to any object
in the Window can be found on the program stack, all objects in the
window can
also be found. Since there are so many objects and the work involved
in displaying
a window can be very complicated (I.E. the automatic geometry
management that
layouts the window when it is first opened or resized.) there are
potentially many
different reference that would cause the same problem. This leads to
a higher than
normal probability that a reference exists that can cause the whole
set of Window
objects to not be freed.
We solved this problem in the following fashion:
Added a new Method called RecycleMemory() on UserWindow.
Documented that when a window is not going to be used again
that it is
preferably that RecycleMemory() is invoked instead
of Close().
The RecycleMemory() method basically sets all references
from parent to
child to NIL and sets all references from child to
parent to NIL.
Thus all objects are isolated from other objects
that make up
the window.
Changed a few methods on UserWindow, like Open(), to check
if the caller
is trying to open a recycled window and throw an
exception.
This was feasible because the code to traverse the parent/child
relationship
ready existed and was being used at close time to perform other
bookkeeping
operations on each of the Widgets.
To summarize:
Automatic memory management is less error prone and more productive but
doesn't come totally for free.
There are things that the programmer can do that assists the memory
manager:
o Set object reference to NIL when known to be correct (this
is the
way the memory is deallocated in an automatic system.)
o Use methods like Clear() on Array and SetAllocatedSize()
on TextData to
that allow these objects to set their internal
references to NIL
when known to be correct.
o Use the RecycleMemory() method on windows, especially very
complicated
windows.
o Build similar type of methods into your own objects when
needed.
o If you build highly connected structures that are very
large in the
number of object involved think that how it might be
broken
apart gracefully (it defeats some of the purpose of
automatic
management to go to great lengths to deal with the
problem.)
o Since program stacks are the source of the 'noise'
references, try
and do things with less tasks (this was one of the
reasons that
we implemented event handlers so that a single task
can control
many different windows.)
Even after doing all this its easy to still have a problem.
Internally we have
access to special tools that can help point at the problem so that
it can be
solved. We are attempting to give users UNSUPPORTED access to these
tools for
Release 3. This should allow users to more easily diagnose problems.
It also
tends to enlighten one about how things are structured and/or point out
inconsistencies that are the source of known/unknown bugs.
Derek
Derek Frankforth [email protected]
Forte Software Inc. [email protected]
1800 Harrison St. +510.869.3407
Oakland CA, 94612I beleive he means to reformat it like a floppy disk.
Go into My Computer, Locate the drive letter associated with your iPod(normally says iPod in it, and shows under removable storage).
Right click on it and choose format - make sure to not have the "quick format" option checked. Then let it format.
If that doesnt work, There are steps somewhere in the 5th gen forum( dont have the link off hand) to try to use the usbstor.sys to update the USB drivers for the Nano/5th gen. -
ASR1001 High Memory Usage - Healthy?
Hi,
My SolarWinds NPM shows very high memory utization (up to 99%) on all ASR1001. CLI outpu belows confirms this:
---------------sh platform software status control-processor br
Load Average
Slot Status 1-Min 5-Min 15-Min
RP0 Healthy 0.11 0.29 0.29
Memory (kB)
Slot Status Total Used (Pct) Free (Pct) Committed (Pct)
RP0 Healthy 3944728 3906172 (99%) 38556 ( 1%) 3801056 (96%)
CPU Utilization
Slot CPU User System Nice Idle IRQ SIRQ IOwait
RP0 0 2.80 2.90 0.00 94.29 0.00 0.00 0.00
1 3.60 5.60 0.00 90.80 0.00 0.00 0.00
Is this considered 'healthy' as in shown in the output?
Thanks.
LarryHi,
This is not normal. There are a couple of things that you should look at.
1-You don't have enough memory on the router and so you need to install more memory.
2-There is feature or could be bug that is hugging up 99% of your memory.
If this is a critical router for you, I suggest you start analyzing the issue sooner than later.
Opening a ticket with TAC may be the first step.
HTH
Maybe you are looking for
-
Hi, I know the conditions when to create aggreate and on what propasal options do we have(St03,rsa1)..all i know but the thing is suppose for a cube 0SD-C01 how we can estimate whether we require aggregates or not..i mean to ask can anybody give me t
-
hello, I would like to display a JTable which each row is a appointment for a patient in a hospital, the rows contain the name of a patient, his surname, his phone number etc... so I created a class RDV managed by a child of ArrayList<RDV> declared l
-
How to install the OWB patch 2864550
hi, friends, i am a newbie to OWB. can u tell me how to install the owb patch 2864550? it seems that this patch is not like other oracle patchs which consists of the products.jar that can be used by the oracle installer. thx
-
I had to re install the OS, and it seems that iPhoto is lost. Where can I found it? is in the install drives? should I get it from apple.com?? thanx joan
-
Re: A536 wifi connection issue...
the device can't get the ipv4 something like that. so it keeps connecting but it doesn't . how can i fix this??