runFinalizersOnExit

Is there anyway to hardwire runFinalizersOnExit
into a class?

Can you make an object that absolutely will run its
its finalize method?  If you can't insure it how do
you note it in the javadoc page.  Is there a standard
BEWARE gif I haven't seen?  Is there a compiler way to
change the default of not running finalizers.  (Does
java have a "pragma" way of controlling the compiler?)
Oh, just questions questions questions.

Comments only for a few days unless your believe your
answer is truly a definitive.
LVL 1
hank1Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

rjg2000Commented:
To the best of my knowledge.

not as such, you can call Runtime.runFinalizersOnExit(true) to force the VM to run the finalizers before collecting the object but there is not guarentee that this will be done immediately.  (It will be done at the time the object is actually freed which may be alot later than when thre reference was lost.  I belive you can force unreference objects to run their finalizers by calling Runtime.runFinalization().  There is no way to force this behaviour without user code.

The way I would approach this is if the finalizer is so important then I would explictly call your own finaliztion method when you throw the object away.  (you imply that you really need the locked resource back and this thus guarantees it).

0
hank1Author Commented:
Running a program normally allows runFinalizersOnExit(true)
to run the finalize methods.  'break'ing out of a program
defeats it.  Anyway to 'capture' this
abnormal program abort and let runFinalizersOnExit()
do it thing?
0
rjg2000Commented:
Not to the best of my knowledge,

If it is really important to do this clean up you will have to do
the house keeping yourself.

If you are talking about breaking out if a program by an execption you can catch this using

try
{
      ..program
}
catch(Throwable t)
{
      cleanUp();
}
}
0
hank1Author Commented:
Ah yes, so right.  Just capture the exception ...  Dahhhh
Thanks.  Plop an answer in here and I'll give rjg2000 the points
PS - You ready for 1999 - 2000 xsistion ( which is still the
20th century by-the-way)
0
rjg2000Commented:
Here it is,

Yes, I'm year 2000 complient but only cos all my normal aliases are already used.  Which is strange cos my name and normal username are quite unusual.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Java

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.