Garbage Collector Agent
Hello, I want to know if the Garbage Collector deletes UnFoldered Document. I have created a custom relationship (ThumbnailRelationship) to attache a thumbnail file (a jpeg) to documents. Now, when some one delete a Document, do I have to create a Override to manually delete the ThumbnailRelationship and the Thumbnail document or the Garbage Collector will take care of it ? Where can I get more info on all those Agents running in the background ?
Thank you
null
Hi -
No, the GarbageCollectionAgent does not delete unfoldered objects. It cleans up references to objects that have been deleted. For example, say a user names testuser1 owns several documents. Then this user gets deleted - who owns the documents? Or more specifcally, what is the value stored in the owner column in the database table? The GarbageCollectionAgent firsts nulls these attributes, and for some attributes (PublicObject.Owner being one of them) it resets the existing objects to reference some other object.
So, if you want the rightobject of a custom relationship to be automatically deleted when the leftobject is deleted, you'll have to do that via an override on your custom relationship subclass.
I think the new admin guide has some more detailed information about the out-of-the-box agents.
hope this helps-
dave
Similar Messages
-
Incremental Garbage Collector is halting my server for MINUTES at a time.
I have a Java server which services hundreds (currently 300-700 on average, target of 2000+) of simultaneous client connections, with a staggering number of long lived (but not permanent) objects.
The docs for incremental garbage collection state: "The incremental garbage collector, which is off by default, will eliminate occasional garbage-collection pauses during program execution." This is NOT true in my case. During peak load, the Server halts occasionally (once an hour or more) and entire MINUTES tick by. Average wait time is 2.5 - 3.5 minutes, the highest I have seen is 4 minutes, 10 seconds. This is entirely unnacceptable.
The server is on Red Hat Linux 6.2, kernel 2.2.14-5.0, with a gig of RAM. My current command line options are
java -server -Xincgc -Xms256M -Xmx900M
And I have just added -verbose:gc to help analyze the gc performance. I have read the gc tuning guide at http://java.sun.com/docs/hotspot/gc/index.html but still feel rather clueless about what is the optimum setup for my particular application.
I will of course start experimenting, but I was hoping to find a "wise old elf" who might give some useful pointers to accelerate the process, seeing as how the Server is already running in a production capacity, time is critical.Are you using a Java application server like Tomcat, Dynamo, WebLogic etc. ?
In that case consider running several server instances on the machine, with the applicationserver's software load balancer. Find the amount of RAM allocated to the heap per serverinstance where garbage collection runs takes a couple of seconds, and don't allocate more than this to each server. Start as many servers as you have available RAM for.
This is the approach recommended by application server vendors such as BEA http://edocs.bea.com/wls/docs61/perform/JVMTuning.html and ATG.
A side benefit of this approach is that in case you get more concurrent users than your computer can handle, you already have the setup for spreading the load over several computers. -
Optimization of the JVM memory - Garbage Collector
Hi ,
Just a question about JVM memory management.
There is memory limitation of memory usage limitation (1.6M) in JVM.
Is there any possibility to use "Garbage collector" mechanism to optimize the memory usage?
Or any suggestions for the JVM memory optimization?
Thanks a lot!!!nicolasmichael wrote:
Hi,
the "memory limitation" does not have anything to do with garbage collection, but with the address space your operating system provides. On a 32bit operating system, your virtual address space is limited to <= 4 GB, depending on your operating system (for example 1.something GB on Windows and 3.something GB on Solaris). No.
Windows 32 bit has a 2 GB application space and can be configured to allow a 3GB space.
The Sun VM does not allow more because of the way that the executable is linked.
[http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4358809] -
Possible Bug in Garbage Collector?
Hello all
I'm new to these forums but I searched for this problem and couldn't find exactly the same thing - apologies if I missed something.
I've written an image browser which displays thumbnails, and when you click on a thumbnail it loads the image in a new window. This new window is just a JFrame, with a single JLabel, with an ImageIcon in it, representing the picture. The path name of the picture is passed when this JFrame is created, and the picture is loaded within the JFrame. Therefore, when I close the JFrame, I expect the memory associated with the image to disappear.
This works. However, when I open a fairly large image (around 1500x1500 pixels), and then close the window, the garbage collector doesn't free the memory. After this, if i continue to open windows with smaller images, they too have the same problem. However, this doesn't happen with smaller images until I open a larger image.
I think this is a problem with the garbage collector, is this familiar to anyone? Can anyone help? Unfortunately I can't really paste code since this is a university assignment. But you can try it - just load a jframe with a large picture, close it, and as long as the program runs the memory will not be deallocated.
Any help would be massively appreciated.
ThanksSince you're not willing to post your code it's very hard to comment.
One question: Are you calling System.gc() after closing these frames? In fact you should probably call it 3 times to make sure the garbage collector takes you seriously. Try this and let us know if you're still showing the leak -
How to get the garbage collector to work?
Hi,
i have i program where i load an image scale it down and save the scaled version in an array. I do this for a whole directory of images.
After every image i set the temporary variable for the loaded image = null and call the function System.gc().
My problem is, that the garbage collector does�nt give the memory of the loaded image free and the used memory of my program grows with every loaded image.
/* Reads all images from a folder an stores them in an Array of images */
public static BufferedImage[] readScaledImagesFromFolder(String folder,
int maxSize) {
File dir = new File(folder); /* Open the Folder */
String[] children = dir.list(); /* Get the children of the folder */
if (children == null) {
// Either dir does not exist or is not a directory
System.out.println("No images in the folder!");
return null;
} else {
/* Init array for images */
BufferedImage[] images = new BufferedImage[children.length];
int i = 0;
int index = 0;
BufferedImage temp;
String filename, fileending;
for (i=0; i<children.length; i++) {
// Get filename of file or directory
filename = children;
/* Get the fileending of the file */
fileending = filename.toLowerCase().substring(filename.length()-4);
if(fileending.equals(".jpg") || fileending.equals(".bmp")
|| fileending.equals(".png") || fileending.equals(".gif"))
/* Read the image */
temp = util.ImageUtils.loadBufferedImage(folder+"/"+filename);
/* Scale the image down and save it in an array */
images[index] = Util.getScaledImage(temp,maxSize);
index++;
temp = null;
System.gc();
Mosaic.sourceImageNum = index;
System.out.println((index+1)+" resized pictures loaded from folder: "+folder);
return images;
How can i get the gargabe collector to work after every iteration?
I tried to let the Thread.sleep(10) after System.gc() but it does�nt help.
Thank you every much
JackNeilHm yes.. i now that System.gc() is only a
suggestion.
But i know what my program is doing and that it
does�nt need the temporary image anymore after i have
a scaled down version. And the temporay image will become unreachable as soon as reading the next one overwrites your temp variable. Setting the variable to null doesn't have much effect.
It would be smarter to load the new image over the
old temporary image and not to expand the heapsize to
maximum.Then look at the possibitly of loading the next image into the same bufferedimage. -
Garbage collector don't works.
Hello people !
When I restart the weblogic server this do not shows the lastest change that I made. I think the problem is related to the garbage collector and its bean tree.
Do you known how to solve this?
Thank you.
Regards.I'm working with WebLogic Server 10.0 and the problem is if I restart the server this don't holds the lastest change that I made, it happens with any type of change (deploy, undeploy, create or delete servers/services, etc).
I've reviewed the log file and I've found the following error:
<Jun 2, 2008 6:45:14 PM CDT> <Warning> <Management> <BEA-141269> <The temporary bean tree updateDeploymentContext(Mon Jun 02 10:46:11 CDT 2008) was allocated for an undo, get, or activate operation, but has not been garbage collected.>
Stopping PointBase server...
PointBase server stopped.
Thank you for your attention -
Clear method and Garbage Collector
Hi Gurus,
Does the Clear method (hashtable, vector etc..) is a good option for garbage collection ?
In other words, if I have a vector V with 100 elements and I perform a V.clear(), am I sure that the 100 elements are now candidates for the Garbage Collection ?
Or is it better to write a loop performing a NULL assignment for each element of the vector ?Hi schapel,
I know it's not a good idea to force the garbage collector, but let me explain what I am confronted with.
(FYI, I didn't write the source code. Comes from a 3rd party)
The aim is to build a jsp page which is the list of the files contained in a web server directory.
I have a "Directory" class, and a "File" class. To build the jsp, each directory of the webserver is represented by a directory class, and each file, ...by a file class.
To simplify, when the tree structure of the web server is build in memory, I create a jsp page to list the files, and then, I do not need the vector anymore. But the vector can be quite huge and each client will build his own vector at the begening of his session (and will never use it again during the session).
Don't you think it's usefull in that situation to free some memory ? -
Hi,
I�m writing a server with a method create(), which returns a new object supplying a home banking service for the clients.
My question is : when a given client has finished with the home banking object, do I need to call the gc, or is there an efficient one with CORBA (a kind of distributed garbage collector) ?
Thank you in advanceMaybe you heard about Distributed Garbage Collector (DGC)? Don't rely on this, since IIOP does not support this. Use PortableRemoteObject.unexportObject() to make remote objects that are no longer in use available for garbage collection.
Bert -
We have 2 CUCM clusters connected via an ICT. We are migrating users from CM8.6 to CM10.5. During the migration we are changing Users AD attributes so that they disappear from CM8. As this marks the user as Inactive in CM8 (and deletes after 24hrs) this prevents the User from logging into CM10 with EMCC.
Is there a way around this?
ie force the garbage collector to run immediately and delete the user
or remove certain fields in CUCM 8 against the user so that they can login using CUCM10 credentials?
Thanks
RichI think you can do something clever here. You can convert the inactive user on cucm 8 back to a standard cucm user and then delete them. This way you can control when to remove the user instea dof waiting for garbage collection. You become your own garbage man :)
You can conver the users back to standard CUCM users using sql query update...Ths is easy to do
run sql update enduser set status=1 ( this is the general command to make all users standard cucm users..you don't want to run this..)
Use this command to make specific users active. You need to use the users extension to filter which user gets converted to standard cucm user
run sql update enduser set status=1 where telephonenumber like ‘2%’
This command will update users with extension beginning with 2
or
run sql update enduser set status=1 where telephonenumber = '2001'
This will convert user with extension 2001 to a standard cucm user
To make sure you got all the users you can use the command
run sql select * from enduser where status=0
This should return zero entry. If you find any user there then use the update command on those users -
Bonjour à la communauté Adobe et merci pour les
éventuelles réponses que je trouverai grâce à
vous.
Je relance je pense une fois de plus, comme sur de nombreux
forums, le problème du Garbage Collector.
J'ai un MovieClip crée dynamiquement. Ce MovieClip
contient un objet vidéo contrôlé et géré
dynamiquement via une classe (cette partie n'est pas bien
importante je suppose); bref je voudrais pouvoir supprimer
complètement ce clip, mais même après un
"removeChild(clip)" et un "clip = null", j'entend toujours le son
de la vidéo... ce qui me fait dire qu'il est toujours
matériellement présent, mais pourquoi??
mon code :
var mavideo:MovieClip;
mavideo = new monclip();
addChild(mavideo);
removeChild(mavideo);
mavideo = null;
System.gc();//j'ai même essayé de forcer le Garbage
Collector, sans succès.
Voilà donc ma question globale : comment supprimer
complètement un clip en as3?
Sorry for my bad english, but the question is : how to
completely delete a MovieClip using AS3? If I remove a MovieClip
which include a video, with the code below, i don't see the video
anymore but i can hear the sound... Strange, isn't it?Bonjour à la communauté Adobe et merci pour les
éventuelles réponses que je trouverai grâce à
vous.
Je relance je pense une fois de plus, comme sur de nombreux
forums, le problème du Garbage Collector.
J'ai un MovieClip crée dynamiquement. Ce MovieClip
contient un objet vidéo contrôlé et géré
dynamiquement via une classe (cette partie n'est pas bien
importante je suppose); bref je voudrais pouvoir supprimer
complètement ce clip, mais même après un
"removeChild(clip)" et un "clip = null", j'entend toujours le son
de la vidéo... ce qui me fait dire qu'il est toujours
matériellement présent, mais pourquoi??
mon code :
var mavideo:MovieClip;
mavideo = new monclip();
addChild(mavideo);
removeChild(mavideo);
mavideo = null;
System.gc();//j'ai même essayé de forcer le Garbage
Collector, sans succès.
Voilà donc ma question globale : comment supprimer
complètement un clip en as3?
Sorry for my bad english, but the question is : how to
completely delete a MovieClip using AS3? If I remove a MovieClip
which include a video, with the code below, i don't see the video
anymore but i can hear the sound... Strange, isn't it? -
the code i am using is a modification of the code/problem found in "Cocoa with Objective-C", chapter 3.
i have tried to use the objective-c 2.0 garbage collector methodology, using @property, @synthesize, etc. when i run the code as listed below i get a leaking message.
[Session started at 2008-02-01 23:33:37 -0500.]
2008-02-01 23:33:38.070 SongsFoundationTool[28876:10b] * _NSAutoreleaseNoPool(): Object 0x2040 of class NSCFString autoreleased with no pool in place - just leaking
Stack: (0x96b10178 0x96a3e0f8)
2008-02-01 23:33:38.075 SongsFoundationTool[28876:10b] Song 1: We Have Exposive
2008-02-01 23:33:38.076 SongsFoundationTool[28876:10b] * _NSAutoreleaseNoPool(): Object 0x2060 of class NSCFString autoreleased with no pool in place - just leaking
Stack: (0x96b10178 0x96a3e0f8)
2008-02-01 23:33:38.078 SongsFoundationTool[28876:10b] Song 2: Loops of Fury
The Debugger has exited with status 0.
when i include the commented out section, in the implementation file section, the description method, and use song1 and song2, in main, instead of song1.name and song2.name the program seems to run fine.
The Debugger has exited with status 0.
[Session started at 2008-02-01 23:38:24 -0500.]
2008-02-01 23:38:24.375 SongsFoundationTool[28936:10b] Song 1: We Have Exposive
2008-02-01 23:38:24.379 SongsFoundationTool[28936:10b] Song 2: Loops of Fury
The Debugger has exited with status 0.
please help me understand what's happening here.
also, why was it necessary to use
@property(copy, readwrite) NSString *name;
@property(copy, readwrite) NSString *artist;
instead of
@property(readwrite) NSString *name;
@property(readwrite) NSString *artist;
thanks everyone, the code is below.
// ....................... header file ...............
#import <Cocoa/Cocoa.h>
@interface Song : NSObject {
NSString *name;
NSString *artist;
@property(copy, readwrite) NSString *name;
@property(copy, readwrite) NSString *artist;
@end
//.................... the implementation file ..................
#import "Song.h"
@implementation Song
@synthesize name;
@synthesize artist;
-(NSString *) description
return [ self name ];
@end
//................................ main............................
#import <Foundation/Foundation.h>
#import "Song.h"
int main (int argc, const char * argv[]) {
Song *song1 = [ [ Song alloc ] init ];
song1.name= @"We Have Exposive" ;
[ song1 setArtist: @"The Future Sound Of Londown" ];
Song *song2 = [ [ Song alloc ] init ];
[ song2 setName: @"Loops of Fury" ];
[ song2 setArtist: @"The Chemical Brothers" ];
// Display Object
NSLog( @"Song 1: %@", song1.name );
NSLog( @"Song 2: %@", song2.name );
// include statements below if -description method is uncommented
// then comment out the two statements above. no memory leak if the code
// is used from the statements below and - description is not commented out and
// the two NSLog statements above are commented out.
NSLog( @"Song 1: %@", song1 );
NSLog( @"Song 2: %@", song2 );
return 0;
}Normally, your main only has a call to NSApplicationMain(). If you aren't doing a traditional MacOS X application, you will still want at least NSApplicationLoad() to get enough of the runtime to avoid those messages.
I don't know for sure about the syntax of Objective-C 2.0. That stuff is all new. What error message are you getting that indicated that (copy, readwrite) is required? Could you provide a link to the actual example source? I did a quick check and assign and readwrite are the defaults. It is possible that readwrite by itself makes no sense. But I'm just guessing. -
How does the Garbage Collector handle reference-free objects?
Hi,
I am interested to know how the GC handle's objects created
without a reference.
The reason this has become of interest to me is that I have
created a "Title" class. The Title class animates each letter of
Title.text to appear in a cloud of smoke.
The smoke is a simple particle system class, when a particle
dies it removes it's associated MovieClip so that eventually all
MovieClip's have been destroyed.
Now in the Title class for each letter I do the following
(psuedo-code):
for( Title.text.length) {
CurrentLetter.twAlpha = new Tween( blah, blah, blah); //
object created
with a reference
new Smoke( CurrentLetter.x, CurrentLetter.y); // object
created
without a reference
Although this is technique is not one I would ever have
thought of in a language that doesn't use a garbage collector it is
mentioned in the Tween documentation and my class works as
intended.
The thing is although it works, it always bothers me when I
don't know precisely
why it works!
If it's working due to the short life span of the class in
question and thus simply missing the GC's window then this could be
problematic. If at some point it is still alive when the GC is
called then my class could be prematurely deleted.
Maybe a class which has a reference to an "alive" MovieClip
is immune from GC?
I Hope someone can shed some light on this topic as the GC is
something that is thinly documented to say the least!
:theory
p.s. first post!Hi,
I would say it would be better use FREE itab at the end of the processing in your code. In the end-of-selection in your code, you can FREE all your itabs that were used in the program. This is one of the good approach of optimizing the memory.
Regards
Vimal -
How intelligent is the garbage collector?
Hi all,
I've got a question about how garbage collection works in an ABAP objects context.
If there are no more references an object is cleaned up and the memory released. Fine.
What about an object O1, which in turn creates another object O2. O2 however also contains a refernce to O1.
When the original process completes, this leaves two objects that reference each other, but with no other contact to the 'outside world'. Is the garbage collector intelligent enough to dump them?
Any input appreciated,
Cheers
MikeHi,
Thanks for the feedback. I am still not sure - you say 'when the program ends it's part'. This is exactly the point - when the program ends, do the objects remain because they still contain references to each other?
More detail:
The references are public instance attributes of both objects (different classes). I would prefer to use functional methods, but am stuck with public attributes which I'm populating in the constructor.
So a process P declares a local var LV_O1 and does a CREATE OBJECT LV_O1.
In the constructor of O1, it does a
CREATE OBJECT me->ATTR_O2 to populate it's attribute with a reference to an instance of O2.
O2 doesn't need to do a CREATE OBJECT, but assigns a ref to O1 to it's attribute ATTR_O1.
So now O1 and O2 refer to each other by public attributes:
O1->ATTR_O2 and O2->ATTR_O1.
The big question is what happens when process P ends and it's variable LV_O1 ceases to exist?
In case anyone's wondering about the overall wisdom of the design, they have to be public attributes (used in Workflow) and they have to refer to each other as instantiation may also happen the other way around.
Cheers
Mike -
Is it possible to run garbage collector in publisher instance with out opening a tunnel?
Hi,
In General we are running garbage collector in publisher by opening a tunnel.
is there any alternate way to do that.
we installed adobe cq5 on solaris10.
thanks,
vidhyadharCheck out - http://dev.day.com/docs/en/crx/current/administering/persistence_managers.html#Automating Garbage Collection
Example of curl command that will start up garbage collection. You can create a sheel script with the curl command and set it up to run as cron job on the publish server which should solve your problem. -
FILESTREAM garbage collector in sql server 2012
HI
what is FILESTREAM garbage collector in sql server 2012
I restored a backup of a sharepoint 2010 content database it is rbs enabled
when I restore blobs are deleting from a rbs storage folder how its happen
adilThis is a good read
http://www.sqlskills.com/blogs/paul/filestream-garbage-collection/
Please Mark This As Answer if it helps to solve the issue Visakh ---------------------------- http://visakhm.blogspot.com/ https://www.facebook.com/VmBlogs
Maybe you are looking for
-
I bought MacKeeper to help make my Imac intel faster. Insted it deleted all my files. I tried to recover using time Machine, and it didn't recover back to yesterday. So I started to pull the files and Applications out of trash. This just got me lippi
-
hi, I am having problems in running report from form. I am using oracle 9i on windows 2000 server and no 9iAS at the moment. On client side, i have windows xp and 9iDS installed. I want to run report from forms in 9iDS testing environment. my forms a
-
Tried to run a CD I had run with Snow Leopard. Now (with Lion) getting a message that PowerPC applications are no longer supported.. How do I overcome this? Thanks
-
Hi, I have an iis server having weblogic plug-in on it. It handles requests coming from an ISA server and forwards them to weblogic server working behind. In a new architecture, I am planning to disregard IIS and connect directly through ISA to weblo
-
i was thinking of updating the wiki main page to be a bit more user friendly (something like http://gentoo-wiki.com/ ), but it seems we have a much simpler wiki templates. is there a way of changing them to be more optional/robust?