Finalizer memory leak addemndum
In my last post, I forgot to mention that the Finalizer referent for all 200000 objects was java.net.Socket*
I did find some information on sourceforge about jTDS having memory issues with PreparedStatements (v1.2) or queries using scrollable cursors (v1.1). The scrollable cursor issue seems to be the closes match to your problem so if you are using version 1.1 you may want to move up to version 1.2. Also check your SQL statements to see if you are using scrollable cursors and if they can be changed to read only.
Similar Messages
-
Tomcat finalizer memory leak ???
I have was profiling my application using yourkit profiler. The statisxtics are stange and I need help to understand them.
Here is the scenario:
1) started Tomcat @ 1:00 profiling using yourkit profiler - only 1 context, our application. I set the profiler to take a heap snapshot on 90% of heap usage. I set the heap to 64Megs because I knew there would be only 2 users on it, and I wanted to get to a point of OOME faster
2) took a snapshot before anyone logged in, and after Tomcat booted up
3) took a few other snapshots in the first hour of usage while 2 people using system
4) everyone left ~ 5:00pm and logged out of our system. The only thing running was Tomcat
5) @ ~ 2:00am the next morning, a snapshot was taken because 90% of the heap was in use (???)
6) the next morning, all the heap was used and Tomcat would only respond with OOME - java.lang.heap out of memory error
I compared the last heap snapshot I took during step 3 above and the low memory snapshot and found that 73% of memory was being held by
java.lang.ref.Finalizer. WHAT THE HECK IS THAT? I have looked all over the web and have found no information on what it is or what it does?
The closest I have come to any information is articles about java finalizers vs. destructors, and what java.lang.Object.Finalize method. I also saw a reference to the java.lang.ref.Finalizer api, but there are no javadocs describing its functinoliaty. My questions are:
1) How are Finalizer and java.lang.Object.Finalize related - or are they? what is java.lang.ref.Finalizer and what do they do?
2) WHY would I have over 200000 Finalizer objects occupying 73% of the heap at step 5 (see above), when in my final snapshot of step 3 I had 0???
3) we are also using org.apache.commons.dbcp and the sql server JTDS driver for our db connection pool in the following manner. Does anyone know if there is a problem with this?
DriverAdapterCPDS cpds = new DriverAdapterCPDS();
try
cpds.setUrl( databaseURL );
cpds.setUser( user );
cpds.setPassword( password );
cpds.setDriver( databaseDriver );
SharedPoolDataSource tds = new SharedPoolDataSource();
tds.setConnectionPoolDataSource( cpds );
tds.setMaxActive( iMaxActive ); // Connection pool Size
tds.setMaxWait( iMaxWait ); // Max connection wait time (in miliseconds)
ds = tds;
catch( Exception e )
e.printStackTrace();
I will be repeating this test today, but will take heap snapshots on an hourly interval - HOPEFULLY, I can find what is going on
Is there any one out there who can help us find this memory leak? Fee for Service could be acceptable?
John McClain
Senior Software Engineer
TCS Healthcare
[email protected]
(530)886-1700x235
"Skepticism is the first step toward truth"I did find some information on sourceforge about jTDS having memory issues with PreparedStatements (v1.2) or queries using scrollable cursors (v1.1). The scrollable cursor issue seems to be the closes match to your problem so if you are using version 1.1 you may want to move up to version 1.2. Also check your SQL statements to see if you are using scrollable cursors and if they can be changed to read only.
-
Memory Leak with 4.5.1/Java/Solaris
Hi,
We are currently running a Java Application using RMI/Weblogic 4.5.1/Solaris 5.7/Java 1.22.
Behavior that has been observered during the day is that memory usage reaches a stage in which it begins increasing and GC doesn't recover any memory, until the heap reaches an extremly large size, then recovers a significant amount of memory.
We have even seen the java process grab more memory than specified in the -Xmx parameter and experience a java.lang.OutOfMemory error.
I have seen postings that describe similar issues in this newsgroup, but none that define a solution.
This problem is intermittent, and our application can run an entire day without experiencing this memory leak. On the other hand there are days when the memory leak occurrs even when the system is idle overnight.
Please let me know any information you have gathered on this subject.
Regards,
Mark Evanstry increasing your virtual memory on your NT system...
"Parasher K. Joshi" <[email protected]> wrote:
>
Hi,
I observed the same confusing stuff in my tests. But I run weblogic 4.5.1 on Windows NT with JDK 1.2.2-w
Usually, I would get a "Low virtual memory" message from windows
and if I click ok & shuffle thourgh my windows I would be ok.
But since last 2 days, I would keep the server running overnight.
When I return in morning,
I would find a "Low virtual memory" message and
on clicking OK. I would find another message tell me that java.exe (which was running weblogic) crashed!!
Now today I tried to watch the memory usage in Task Manager. And I found the most wierd thing.
I saw that even when the system was doing virtually nothing,
except print a string at intervals, the memory usage would go
up steadyly.
Even doing a forced finalization and gc did not seem to stop it.
BUT, BY CHANCE I HAPPEN TO MINIMISE AND MAXIMISE THE WEBLOGIC
CONSOLE OUTPUT WINDOW.
WHAT I SAW IN THE TASK MANAGER AMAZED ME!
THE MEMORY USAGE IN TASK MANAGER HAD GONE DOWN TO 24XXKB, WHILE
IT WAS ABOUT 20000K OR EVEN MORE.
This seems to support the fact that during my test, I would
get the "low virtual memory" message and if OKed it and shuffled
though application windows (maybe minimise, maximise the weblogic
console output window in process), I would be able to complete
my application. But when the message appears during night runs,
nothing is done and by morning, when I reach to work,
I would see that weblogic had crashed!!
You may try that and see if it helps you.
Parasher
Mark Evans <[email protected]> wrote:
Hi,
We are currently running a Java Application using RMI/Weblogic 4.5.1/Solaris 5.7/Java 1.22.
Behavior that has been observered during the day is that memory usage reaches a stage in which it begins increasing and GC doesn't recover any memory, until the heap reaches an extremly large size, then recovers a significant amount of memory.
We have even seen the java process grab more memory than specified in the -Xmx parameter and experience a java.lang.OutOfMemory error.
I have seen postings that describe similar issues in this newsgroup, but none that define a solution.
This problem is intermittent, and our application can run an entire day without experiencing this memory leak. On the other hand there are days when the memory leak occurrs even when the system is idle overnight.
Please let me know any information you have gathered on this subject.
Regards,
Mark Evans -
Memory leak within FOProcessor class
Hi all,
I'm trying to use the XML Publisher API (5.6.2 and 5.6.3) to generate PDF documents from XSL templates and XML data in a J2EE environment (Jboss 4.0.5) with Struts but a memory leak occurs.
It seems not to be a multithreading issue because the leak is there even if the PDF documents are generated one by one.
I made many tests to isolate the leak and I have simplified my code as much as possible: it seems to happen within the FOProcessor class.
One of the tests generates 4,500 PDF documents (one at a time) from an XML file (3 KB) and an XSL file (74 KB with blanks). Nothing else is done with the Jboss server during this test. The XSL file was created before the test from a RTF file with XML Publisher. The memory leak is around 70 KB for each PDF document (around 300 MB for the whole test).
As you can see below from the heap histogram (taken at end of test after a full garbage collection) it seems that the XSL and XML elements/attributes are not released (and thus never garbage collected).
Did I miss something or is there an actual problem with the XML/XSL parsing within the XML Publisher API?
Thanks for your help.Object Histogram:
Size Count Class description
131376968 2353450 java.lang.Object[]
60389464 937300 char[]
48260304 335141 oracle.xml.parser.v2.XSLResultElement
35690000 2230625 oracle.xml.util.FastVector
24127104 1005296 java.lang.String
16539120 413478 oracle.xml.parser.v2.XSLNode$AttrValueTmpl
14757064 128058 int[]
13348768 417149 java.lang.ref.Finalizer
12701776 102220 * ConstMethodKlass
12544808 23433 byte[]
12204080 108965 oracle.xml.parser.v2.XSLText
8344600 86584 java.util.Hashtable$Entry[]
7363768 102220 * MethodKlass
5592784 138700 * SymbolKlass
5362256 335141 oracle.xml.parser.v2.XSLAttributeSet[]
5267336 8135 * ConstantPoolKlass
5234016 163563 java.util.TreeMap$Entry
5121744 213406 java.util.Hashtable$Entry
4900480 61256 oracle.xml.parser.v2.XPathStep
4087120 51089 java.lang.reflect.Method
3823216 40276 java.util.HashMap$Entry[]
3524696 8135 * InstanceKlassKlass
3378000 84450 java.util.Hashtable
3064872 127703 java.util.HashMap$Entry
2971904 6880 * ConstantPoolCacheKlass
2968560 26505 oracle.xml.parser.v2.XSLValueOf
2770656 24738 oracle.xml.parser.v2.XSLVariable
2167520 27094 oracle.xml.parser.v2.XPathFunctionCall
1880088 33573 oracle.xml.parser.v2.PathExpr
1726360 61482 java.lang.String[]
1573720 39343 java.util.HashMap
1476576 30762 oracle.xml.parser.v2.XSLExprValue
1460840 36521 java.util.TreeMap
1319360 23560 oracle.xml.parser.v2.XPathConstantExpr
1054976 16484 org.jboss.mx.server.InvocationContext
1001264 3546 * MethodDataKlass
887424 11049 short[]
835680 8705 java.lang.Class
830208 25944 oracle.xml.util.NSNameImpl
705816 29409 java.util.ArrayList
684152 4501 org.jboss.web.tomcat.tc5.session.SessionBasedClusteredSession
670288 14071 java.lang.Object[]
640832 10013 oracle.xml.parser.v2.XPathVarReference
561056 35066 javax.management.modelmbean.DescriptorSupport
556272 23178 EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap$Entry
552984 30451 java.lang.Class[]
494760 2945 oracle.xml.parser.v2.XSLTemplate
480792 20033 antlr.ANTLRHashString
442576 27661 java.lang.Integer
432096 4501 org.jboss.web.tomcat.statistics.ReplicationStatistics$TimeStatistic
429040 10726 org.hibernate.hql.ast.tree.Node
369880 9247 javax.management.modelmbean.ModelMBeanOperationInfo
312384 19524 java.util.TreeMap$3
305368 5453 java.net.URL
287392 8981 org.jboss.mx.interceptor.ReflectedDispatcher
259264 338 EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap$Entry[]
252280 4505 org.jboss.cache.lock.ReadWriteLockWithUpgrade
238600 5965 org.jboss.mx.interceptor.PersistenceInterceptor
238600 5965 org.jboss.mx.interceptor.AttributeDispatcher
236616 9859 org.jboss.mx.server.AbstractMBeanInvoker$OperationKey
219776 3434 java.lang.reflect.Constructor
206880 6465 javax.management.modelmbean.ModelMBeanAttributeInfo
193168 2259 java.lang.reflect.Method[]
173184 5412 java.lang.ref.SoftReference
164920 589 oracle.xml.parser.v2.XSLStylesheet
164464 541 * ObjArrayKlassKlass
152832 6368 org.dom4j.tree.DefaultAttribute
149472 2076 java.lang.reflect.Field
144160 4505 org.jboss.cache.Node
143160 5965 org.jboss.mx.interceptor.ModelMBeanAttributeInterceptor
140600 3515 org.apache.xerces.dom.DeferredTextImpl
140224 2740 javax.management.modelmbean.ModelMBeanAttributeInfo[]
139056 7658 boolean[]
134664 3359 java.lang.String[][]
131936 1178 oracle.xml.parser.v2.XSLCondition
131936 1178 oracle.xml.parser.v2.XSLForEach
129072 2668 javax.management.modelmbean.ModelMBeanOperationInfo[]
128952 5373 EDU.oswego.cs.dl.util.concurrent.ConcurrentHashMap$Entry
124776 1733 org.hibernate.hql.ast.tree.IdentNode
115200 1800 javax.management.modelmbean.ModelMBeanInfoSupport
113088 2356 oracle.xml.parser.v2.AdditiveExpr
109416 4559 java.beans.PropertyChangeSupport
108960 1135 java.io.ObjectStreamClass
108120 4505 org.jboss.cache.lock.IdentityLock
105864 345 long[]
98752 3086 java.io.ObjectStreamClass$WeakClassKey
97968 4082 java.util.Vector
96672 2014 java.util.Properties
94240 589 oracle.xml.parser.v2.XSLOutput
90072 3753 javax.management.ObjectName$Property
87432 3643 javax.management.MBeanParameterInfo
82368 858 org.hibernate.hql.ast.tree.DotNode
81248 5078 java.lang.Long
78656 1229 org.hibernate.mapping.Column
77664 4854 java.util.Collections$SynchronizedSet
77448 3227 java.util.LinkedList$Entry
73824 769 org.jboss.mx.modelmbean.XMBean
73536 4596 java.util.Hashtable$KeySet
72144 4509 EDU.oswego.cs.dl.util.concurrent.CopyOnWriteArraySet
72144 4509 EDU.oswego.cs.dl.util.concurrent.CopyOnWriteArrayList
72144 4509 org.jboss.cache.Fqn
72080 4505 org.jboss.cache.lock.ReadWriteLockWithUpgrade$WriterLock
72080 4505 org.jboss.cache.lock.LockStrategyRepeatableRead
72080 4505 org.jboss.cache.lock.ReadWriteLockWithUpgrade$ReaderLock
72080 4505 org.jboss.cache.lock.LockMap
72016 4501 org.apache.catalina.session.StandardSessionFacade
71776 4486 java.io.FileDescriptor
70680 589 oracle.xml.parser.v2.XSLCallTemplate
70680 589 oracle.xml.parser.v2.XSLApplyTemplates
70224 154 org.hibernate.persister.entity.SingleTableEntityPersister
68296 2774 javax.management.ObjectName$Property[]
68160 1065 org.apache.xerces.dom.DeferredElementNSImpl
67760 770 org.hibernate.loader.entity.EntityLoader
66992 19 EDU.oswego.cs.dl.util.concurrent.ConcurrentHashMap$Entry[]
65968 1178 oracle.xml.parser.v2.XPathFilterExpr
65968 589 oracle.xml.parser.v2.XMLUTF8Reader
64432 4027 java.util.HashSet
63648 1326 oracle.xml.parser.v2.XMLNode[]
63440 1586 org.hibernate.loader.DefaultEntityAliases
61256 589 oracle.xml.parser.v2.XSLNode
61256 589 oracle.xml.parser.v2.XMLReader
60816 2534 org.apache.xerces.xni.QName
57360 478 org.hibernate.hql.ast.tree.FromElement
56976 1187 org.hibernate.mapping.Property
56544 1178 oracle.xml.parser.v2.XSLNodeSetExpr
56544 1178 oracle.xml.parser.v2.MultiplicativeExpr
56544 1178 oracle.xml.parser.v2.EqualExpr
54384 618 oracle.xml.parser.v2.XMLError
49392 2783 javax.management.MBeanParameterInfo[]
47648 1489 java.util.LinkedHashMap$Entry
47120 589 oracle.xml.parser.v2.XMLByteReader[]
... -
Memory Leak with JDialog in Java 1.4.2_07
Hello!
All books I have read say to close a JDialog, it is enough to call the Method "dispose". Now I have written my first applikation an with every Dialog I open, the Software needs more RAM. With every Dialog I open, my software needs 1,5 MB RAM.
I can`t reuse the Dialogs, because the user needs to look at view at the same time
The Question is, how to close a JDialog correct that the GC can clean all Objects in RAM.
Here are my Example Programm where you can view the differences. I tryed a view things out. With every Dialog the software needs xxx kb of RAM (its only a little example).
Look at the Task Manager to look the real RAM needage.
Thanks for Help
Rainer
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
public class TestRAMUsage extends JFrame {
private JPanel jContentPane = null;
private JMenuBar jJMenuBar = null;
private JMenu fileMenu = null;
private JMenuItem exitMenuItem = null;
private JButton jB_showandclose_normal = null;
private JButton jB_showandclose_advanced = null;
* This method initializes jB_showandclose_normal
* @return javax.swing.JButton
private JButton getJB_showandclose_normal() {
if (jB_showandclose_normal == null) {
jB_showandclose_normal = new JButton();
jB_showandclose_normal.setBounds(new java.awt.Rectangle(43,30,214,18));
jB_showandclose_normal.setText("open/close Dialog normal x 50");
jB_showandclose_normal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
for (int i = 0; i < 50; i++) {
TestDialog td = new TestDialog();
td.show();
td.close_normal();
System.gc();
return jB_showandclose_normal;
* This method initializes jB_showandclose_advanced
* @return javax.swing.JButton
private JButton getJB_showandclose_advanced() {
if (jB_showandclose_advanced == null) {
jB_showandclose_advanced = new JButton();
jB_showandclose_advanced.setBounds(new java.awt.Rectangle(16,76,260,18));
jB_showandclose_advanced.setText("open/close Dialog advanced x 50");
jB_showandclose_advanced.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
for (int i = 0; i < 50; i++) {
TestDialog td = new TestDialog();
td.show();
td.close_advanced();
System.gc();
return jB_showandclose_advanced;
* @param args
public static void main(String[] args) {
// TODO Auto-generated method stub
TestRAMUsage application = new TestRAMUsage();
application.show();
* This is the default constructor
public TestRAMUsage() {
super();
initialize();
* This method initializes this
* @return void
private void initialize() {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setJMenuBar(getJJMenuBar());
this.setSize(300, 200);
this.setContentPane(getJContentPane());
this.setTitle("Application");
* This method initializes jContentPane
* @return javax.swing.JPanel
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJB_showandclose_normal(), null);
jContentPane.add(getJB_showandclose_advanced(), null);
return jContentPane;
* This method initializes jJMenuBar
* @return javax.swing.JMenuBar
private JMenuBar getJJMenuBar() {
if (jJMenuBar == null) {
jJMenuBar = new JMenuBar();
jJMenuBar.add(getFileMenu());
return jJMenuBar;
* This method initializes jMenu
* @return javax.swing.JMenu
private JMenu getFileMenu() {
if (fileMenu == null) {
fileMenu = new JMenu();
fileMenu.setText("File");
fileMenu.add(getExitMenuItem());
return fileMenu;
* This method initializes jMenuItem
* @return javax.swing.JMenuItem
private JMenuItem getExitMenuItem() {
if (exitMenuItem == null) {
exitMenuItem = new JMenuItem();
exitMenuItem.setText("Exit");
exitMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
return exitMenuItem;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class TestDialog extends JDialog {
private static final long serialVersionUID = -4326706771573368209L;
private JPanel jContentPane = null;
private JButton jB_drucken = null;
private JTextField jTF_hallo = null;
private JButton jB_close = null;
* This is the default constructor
public TestDialog() {
super();
initialize();
* This method initializes this
* @return void
private void initialize() {
this.setSize(541, 255);
this.setTitle("Speicher Dialog");
this.setContentPane(getJContentPane());
* This method initializes jContentPane
* @return javax.swing.JPanel
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJB_drucken(), null);
jContentPane.add(getJTF_hallo(), null);
jContentPane.add(getJB_close(), null);
return jContentPane;
* This method initializes jB_drucken
* @return javax.swing.JButton
private JButton getJB_drucken() {
if (jB_drucken == null) {
jB_drucken = new JButton();
jB_drucken.setBounds(new java.awt.Rectangle(45, 88, 211, 19));
jB_drucken.setText("Sag Hallo Welt");
return jB_drucken;
* This method initializes jTF_hallo
* @return javax.swing.JTextField
private JTextField getJTF_hallo() {
if (jTF_hallo == null) {
jTF_hallo = new JTextField();
jTF_hallo.setBounds(new java.awt.Rectangle(269, 88, 228, 19));
return jTF_hallo;
* This method initializes jB_close
* @return javax.swing.JButton
private JButton getJB_close() {
if (jB_close == null) {
jB_close = new JButton();
jB_close.setBounds(new java.awt.Rectangle(196, 179, 109, 22));
jB_close.setText("Schlie�en");
jB_close.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
try {
// setVisible(false);
dispose();
removeAll();
// getContentPane().removeAll();
// finalize();
} catch (Throwable e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
return jB_close;
* Dispose the Dialog
public void close_normal() {
dispose();
* Set all Variables to null
* Remove all Container
* dispose the Dialog
* and finalize it!
public void close_advanced() {
// System.out.println(this.);
dispose();
// show();
jContentPane = null;
jB_drucken = null;
jTF_hallo = null;
jB_close = null;
getContentPane().removeAll();
removeAll();
try {
finalize();
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // @jve:decl-index=0:visual-constraint="10,10"I have use Methods in some Software Produkts. But if your Software
use 30 MB in RAM the Runtime classes say 12 MB used. I don`t think
that this works hereThe 12 MB is the memory used of the available 30 MB memory available. Once the VM get its memory from the OS, it does not have to return the memory back to the OS right away.
By calling System.gc() does nt guarentee the garbage collector to be activated right away. you are just asking the garbage collector to run when it get a chance. Since the emeory is not near the max memory available...the gc is likely not going to run. Futhermore, if your application is running..the gc is likely wont run, unless memory is needed when you reach the max limit.
because the user want to view at more than one Dialog at the same
timeunderstandable..i just hope the 50 dialogs is just for testing the memory. i can't imagine any user would want to open 50 dialog at the same time =)
And the other is, that the Variables in the Dialog class wouldn`t clean
in RAM (that was the reason to set all to null!)why would it not be? When you dispose the dialog, the object will be null out..so when the garbage collector kick in, it will reclaim the memory. Now, if you have references to object in the dialog, that reference will be null out as well..the object may still exist (by having another live object having a reference to it)...the garbage collector would reclaim the dialog memory..but not the "live" object that the dialog has reference to.
I ran the application..testing both button.
The top button..there were little memory consumption..the second button consume a little memory bit-by-bit. I see no memory leak here. What happens is you called GC() 50 times..but it will only run one time when it get a chance...by nulling out the variables, and calling finalize()..it actually slow down the garbage collecting...that's why you should not even obther with having those two method. Furthermore, finalize method may not even be called.
Memory leak occurs when you have a reference from an object still hanging around, but that object is no longer needed. This is a design issue.
example
public class A{
Item item = new Item();
public void getItem(){ return item; };
public class B{
Item item;
public B(A a){
item = a.getItem();
A a = new A();
B b = new B(a);
a = null;when a is null out..the item reference is null, but the actual object still exist and 'b' has a reference to it. so by nulling out those object does not mean you just got rid of the object. it's better to let the object scope run out..and the garbage collector to collect it.. When you null out the object, you could accidentally null out an object that some other object may be using. -
Memory leak under GNU/Linux when using exec()
Hi,
We detected that our application was taking all the free memory of the computer when we were using intensively and periodically the method exec() to execute some commands of the OS. The OS of the computer is a GNU/Linux based OS.
So, in order to do some monitoring we decided to wrote a simple program that called exec() infinite number of times, and using the profiler tool of Netbeans we saw a memory leak in the program because the number of surviving generations increased during all the execution time. The classes that have more surviving generations are java.lang.ref.Finalizer, java.io.FileDescriptor and byte[].
We also decided to test this simple program using Windows, and in that OS we saw that the memory leak disappeared: the number of surviving generations was almost stable.
I attach you the code of the program.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class testExec
public static void main(String args[]) throws IOException, InterruptedException
Runtime runtime = Runtime.getRuntime();
while (true)
Process process = null;
InputStream is = null;
InputStreamReader isr = null;
BufferedReader br = null;
try
process = runtime.exec("ls");
//process = runtime.exec("cmd /c dir");
is = process.getInputStream();
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null)
System.out.println(line);
finally
process.waitFor();
if (is != null)
is.close();
if (isr != null)
isr.close();
if (br != null)
br.close();
if (process != null)
process.destroy();
}¿Is anything wrong with the test program we wrote? (we know that is not usual to call infinite times the command ls/dir, but it's just a test)
¿Why do we have a memory leak in Linux but not in Windows?
I will appreciate any help or ideas. Thanks in advance.Hi Joby,
From our last profiling results, we haven't found yet a proper solution. We think that probably the problem is caused by the byte[]'s/FileInputStreams created by the class UNIXProcess that manage the stdin, stdout and stderr streams. It seems that these byte arrays cannot be removed correctly by the garbage collector and they become bigger and bigger, so at the end they took all the memory of the system.
We downloaded the last version of OpenJDK 6 (build b19) and modified UNIXProcess.java.linux so when we call its method destroy(), we assign to null those streams. We did that because we wanted to indicate to the garbage collector that these objects could be removed, as we saw that the close() methods doesn't do anything on their implementation.
public void destroy() {
// There is a risk that pid will be recycled, causing us to
// kill the wrong process! So we only terminate processes
// that appear to still be running. Even with this check,
// there is an unavoidable race condition here, but the window
// is very small, and OSes try hard to not recycle pids too
// soon, so this is quite safe.
synchronized (this) {
if (!hasExited)
destroyProcess(pid);
try {
stdin_stream.close();
stdout_stream.close();
stderr_stream.close();
// LINES WE ADDED
stdin_stream = null;
stdout_stream = null;
stderr_stream = null;
} catch (IOException e) {
// ignore
e.printStackTrace();
}But this didn't work at all. We saw that we were able to execute for a long time our application and that the free memory of the system wasn't decreasing as before, but we did some profiling with this custom JVM and the test application and we still see more or less the same behaviour: lots of surviving generations, at some point increase of the used heap to the maximum allowed, and finally the crash of the test app.
So sadly, we still don't have a solution for that problem. You could try to compile OpenJDK 6, modify it, and try it with your program to see if the last version works for you. Compiling OpenJDK 6 in Linux is quite easy: you just have to download the source and the binaries from here and configure your environment with something like this:
export ANT_HOME=/opt/apache-ant-1.7.1/
export ALT_BOOTDIR=/usr/lib/jvm/java-6-sun
export ALT_OUTPUTDIR=/tmp/openjdk
export ALT_BINARY_PLUGS_PATH=/opt/openjdk-binary-plugs/
export ALT_JDK_IMPORT_PATH=/usr/lib/jvm/java-6-sun
export LD_LIBRARY_PATH=
export CLASSPATH=
export JAVA_HOME=
export LANG=C
export CC=/usr/bin/gcc-4.3
export CXX=/usr/bin/g++-4.3Hope it helps Joby :)
Cheers. -
JNA Structures and memory leak
Hi all.
Sorry my JNA question in JNI forum, but i think it's exactly that forum for this.
My question:
I use an WinAPI function, and pass a Structure into the function.
Calling of this function turning in "While" cycle, for example:
public void getData() {
MyStructure structure = new MyStructure();
anWinAPI_Function(structure);
Form.jLabel1.setText("use some data from this structure: " + structure.Data);
}All code work's as well, but i have a memory leak by using structure (by creating a new MyStructure());
I really know that, becose if use an int[] there is no memory leak, but i have too many WinAPI functions and can't use this way.
Methods clear() and finalize() don't give th effect.
Sorry for my english, hope that somebody can help me, thank's =)scream3r wrote:
All code work's as well, but i have a memory leak by using structure (by creating a new MyStructure());Presumably this really is java code. As such the following are the only possibilities
1. You do not have a memory leak. You are misreading a tool (probably task manager) and assuming a leak exists when it doesn't.
2. You need to call something either on MyStructure or by passing it to another class to free it. See the documentation.
3. The leak is caused by something else. -
NewDirectByteBuffer memory leak
I ve coded a new JNI program , when i try to use NewDirectByteBuffer function ,
i get memory leak on my program , when i cancel NewDirectByteBuffer function call everything is going ok after that i ve added DeleteLocalRef function may stop memory leak but its not...Whats the problem can be ? Is it a bug ?
I'm using Java 6 SDK AMD64bit edition
static JNIEnv *pEnv = NULL;
g_pVM->AttachCurrentThread( (VOID**)&pEnv,NULL );
jobject objectByteBuffer = pEnv->NewDirectByteBuffer(pBuffer,lBufferSize);
pEnv->CallVoidMethod(g_ObjListener,g_methodID,objectByteBuffer);
pEnv->DeleteLocalRef(objectByteBuffer);I want to build a library and pass that ByteBuffer to external users'If it was me I would try to get rid of that requirement. But otherwise....
Finalize would be required but only as a fail safe. You should not document that you have such a fail safe. Rather you should document that the users must correctly call a cleanup method when they are through. And document it in such a way to make it obvious how it must work with exceptions as well.
If this really is a library, where you are unlikely to be able to assist the users, then you might want to provide an optional way to track how many buffers have been allocated and cleaned. Thus the users will have a primitive way to validate correct clean up. -
GIFImageReader and JPEGImageReader memory leak
We are calling GIFImageReader and JPEGImageReader a lot but find that they have have memory leaks. When repeatedly reading images using the GIFImageReader and JPEGImageReader classes in the com.sun.imageio.plugins.jpeg package, some memory is never reclaimed. These classes use native code, and we believe this is where the leaks are. Indeed, by monitoring the Java heap size, we see that it is always returning to its initial level after the images have been read. However, the virtual memory size in the OS (Windows in our case) continues to grow, and never decreases.
We are cleaning up as much as we can after we are finished with the images. We are calling flush() on the images. We are also calling reset() and dispose() on the image readers. This should minimize the amount of work done in the reader's finalize() method, so we do not believe that this is related to Sun bug 4827358.
We have also tried using the plug-in reader classes from JAI. If anything, these classes leak more.
Any help would be much appreciated.Yeh, I've noticed this too, Reloading into the same buffered image, only 1 Pic at a time,
Sometimes after 20 -30 images, i'm Out of Memory ( Win98 ), . It doesn't seem to happen with large
.TIF files, . if there is some workaround understandable by a mere hobbyist, I'd also like to hear. -
Memory leak caused by de-serialization
i have a memory leak.
i am "pretty" sure it is related to serialization .
for(;;) {
sok.receive(dgPak);
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(dgPak.getData()));
MyInterface x = (MyInterface) ois.readObject();
x.go();
x = null;
System.gc();
}after the above code loops for 100-200 times, i always get OutOfMemoryError .
important :
public class MyClass implements MyInterface {
public void go() {
public void finalize() {
System.out.println("object disposed. memory released. but, what might be leaking here??");
}in my testing: " *public void go();* " and " *public void finalize();* " execute the same number of times.
so... my guess is allocating memory via " *new* " and de-serialization is different, right?
this must be related to the problem?i forgot to include one line, but i didn't see why it made a difference:
ConcurrentMap<Connection, Boolean> connPool = this.createConnPool();
for(;;) {
sok.receive(dgPak);
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(dgPak.getData()));
MyInterface foo = (MyInterface) ois.readObject();
foo.assignSharedMap(connPool); // <-- forgot to include this one line.
foo.doStuff();
foo = null;
System.gc();
}the number of de-serializations still equals the number of " +public void finalize();+ " invocations.
note: i never add new connections to the pool. it "looks" like a ConcurrentMap
does not allow objects that reference it to compleley die. (if this behaviour is as to be expected , my apologies, and could you explain a safe way for multiple objects to share a common Collection ?)
this code works fine:
for(;;) {
sok.receive(dgPak);
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(dgPak.getData()));
MyInterface foo = (MyInterface) ois.readObject();
foo.doStuff();
foo = null;
System.gc();
}at this stage of de-bugging i could have tested with just a regular java.util.Map<Connection, Boolean> but forgot. i am using a
completely different approach now, so i'm not going back to test, though i bet it is related to java.util.concurrent. . -
i have a super simple java test applet. it does nothing but generate a memory leak. maybe im doning something wrong.
the interesting thing is that i only have to comment out the code that adds the JScrollPane object to the contentPane of the JApplet. and this class will then finalize.
here is the test applet
package com.hobart.scale.test;
import java.awt.*;
import javax.swing.*;
public class TestApplet extends JApplet
/* PUBLIC MEMBERS */
public TestApplet()
System.out.println("TestApplet:constructor ...");
/* APPLET PUBLIC MEMBERS */
//Initialize the applet
public void init()
System.out.println("TestApplet:Initializing ...");
Container cont = getContentPane(); // get the container to hold it all
cont.setLayout( new BorderLayout() ); // define the layout used for this applet
cont.add(new JScrollPane(), "Center" );
//Start the applet
public void start()
System.out.println("TestApplet:Initializing ...");
//Stop the applet
public void stop()
System.out.println("TestApplet:Stopped ...");
//Destroy the applet
public void destroy()
Container cont = getContentPane();
cont.removeAll();
removeAll();
System.out.println("TestApplet:Destroying ...");
public void finalize() throws Throwable {
System.out.println("finalize ListFonts.java");
super.finalize();
/* PUBLIC STATIC MEMBERS */
public static void main(String[] args)
System.out.println("TestApplet:main ...");
/* PUBLIC STATIC FINAL MEMBERS */
/* PRIVATE MEMBERS */
}why should it create a memory leak?
-
I have a bug in my app that is causing a memory leak, and I'd appreciate it if someone here with experience in this kind of thing could give me a few pointers. I am using IBM's heapAnalyzer and also jhat.
Based on what these 2 tools are telling me, I seem to have 2 big memory leak issues:
1. I have a class that extends Panel, and it is creating a small memory leak. This particular class sits in a container in a container (and so on) and whose top level parent container is a Frame. If I set the parent Frame to null, does that propagate down the food chain to all of the child containers? Or do I need to create some kind of propagating method to set everything in those objects to null? I could use some kind of Decorator on each container something like resetContainer() or something, but would that do it?
2. (this one seems to be much bigger) Both jhat and HeapAnalyzer both tell me I have quite a large number of java.lang.ref.Finalizer objects sitting in the stack. I can't even find a java.lang.ref.Finalizer in the javadoc! What is this thing?http://www.javaperformancetuning.com/tools/jprofiler/index.shtml
That link says that your #2 question is due to weak references, likely due to swing.text (I'm not vouching for the software, just saying that the link mentions that library). -
How to determine memory leaks?
I tried in XCODE, the RUN/ Start with Performance TOol / and tried out the various options. I was running my app and looking to see if it would report increasing memory use but it seemed to be looking at my total system (i was running under the simulator). In general what is the recommended procedure for determining memory leaks, which tool to use, and what tracing can i use?
How does one look at the retain count of an object? are there system routines that have knonw leaks?You took the right path. Once instruments comes up select the Leaks tool. Turn off automatic leak detection. In your app, start off at some known state, do something, and come back to the known state and check for leaks. For instance start off in a view, do something that brings up another view then come back to the original view and check for leaks. Leaks will show you if you leaked. Since you took a very deterministic path then checked it should be straight forward to go to the code and find / fix the leaks. Leaks shows you where the code where the leak was generated.
-
Memory leak in JSpinner implementation (maybe others?)
Hi,
I am developing an application using Java and Swing, and have run into some problems with memory leaks. After examining the source code and making an example program (provided below), I can only come to the conclusion that there is a bug in the implementation of JSpinner in Sun Java 1.6.0_03.
If one uses a custom model with the JSpinner, it attaches itself as a listener to the model. However, it never removes the listening connection, even if the model is changed. This causes the JSpinner to be kept in memory as long as the model exists, even if all other references to the component have been removed.
An example program is available at http://eddie.dy.fi/~sampo/ModelTest.java . It is a simple swing program that has the JSpinner and two buttons, the first of which writes to stdout the listeners of the original model and the second changes the spinner model to a newly-created model. A sample output is below:
Running on 1.6.0_03 from Sun Microsystems Inc.
Listeners before connecting to JSpinner:
Model value is 0, 0 listeners connected:
Listeners after connecting to JSpinner:
Model value is 0, 2 listeners connected:
1: interface javax.swing.event.ChangeListener
2: javax.swing.JSpinner$ModelListener@9971ad
Listeners now:
Model value is 8, 2 listeners connected:
1: interface javax.swing.event.ChangeListener
2: javax.swing.JSpinner$ModelListener@9971ad
Changing spinner model.
Listeners now:
Model value is 8, 2 listeners connected:
1: interface javax.swing.event.ChangeListener
2: javax.swing.JSpinner$ModelListener@9971adThis shows that even though the model of the JSpinner has been changed, it still listens to the original model. I haven't looked at other components whether they retain connections to the old models as well.
In my case, I have an adaptor-model which provides a SpinnerModel interface to the actual data. The adaptor is implemented so that it listens to the underlying model only when it itself is being listened to. If the JComponents using the model were to remove the listening connections, it, too, would be automatically garbage-collected. However, since JSpinner does not remove the connections, the adaptor also continues to listen to the underlying model, and neither can be garbage-collected.
All in all, the listener-connections seem to be a very easy place to make memory leaks in Java and especially in Swing. However, as I see it, it would be a simple matter to make everything work automatically with one simple rule: Listen to the models only when necessary.
If a component is hidden (or alternatively has no contact to a parent JFrame or equivalent), it does not need to listen to the model and should remove the connections. When the component is again set visible (or connected to a frame) it can re-add the connections and re-read the current model values just as it does when initializing the component. Similarly, any adaptor-models should listen to the underlying model only when it itself is being listened to.
If the components were implemented in this way, one could simply remove a component from the frame and throw it away, and automatically any listener-connections will be removed and it can be garbage-collected. Similarly any adaptor-models are collected when they are no longer in use.
Changing the API implementation in this way would not require any changes to applications, as the only thing that changes are the listener-connections. Currently used separate connection-removing methods should still work, though they would be unnecessary any more. The API would look exactly the same from the view of an application programmer, only that she would not need to care about remnant listening connections. (As far as I can tell, the current API specification would allow the API to be implemented as described above, but it should of course require it to be implemented in such a way.)
Am I missing something, or is there some valid reason why the API is not implemented like this?
PS. I'm new to these forums, so if there is a better place to post these reports, please tell me. Thanks.Another cognition: It's the following code, that causes the memory to be accumulated:
obj = m_orb.resolve_initial_references("NameService");
ctx = NamingContextExtHelper.narrow(obj);For the first 4 calls to this code the memory usage of the nameservice is unchanged. From the 5th to the 8th call, it's increased by approx. 10KB per call. And thenceforward (beginning with the 9th call) it's increasing by approx. 10MB.
What's going wrong here? -
Memory Leaks Unresponsive Mouse
2009 8 core Mac Pro w/ 24 GB of RAM, ATI Radeon 4870, and a SeriTek PCIe eSATA card (card only has drives connected when running a manual drive clone). When running Toast 10 or Parallels 9, my RAM will fill up (I use a program called Menu Meters to monitor stuff). This machine worked just fine under OS 10.9 and earlier - no issues like this at all. ClamXAV will also completely fill the RAM up (the meter will be full green, instead of part green, then mostly grey when Toast or Parallels fills it up). I have to use Terminal to purge it so that the machine is usable.
The other thing that happens is that sometimes when the computer wakes up or I am in the middle of doing something, the mouse will still move, but the dock will not pop open and the left button the mouse doesn't respond. The right button will open the right click menu, but will not respond normally at all. I have tried a different Magic Mouse, but the problem is the same.
I thought that it may be a problem with the factory RAM and the Kingston RAM not playing nicely together. So I ran it with just the factory 8 GB and then ran it with the Kingston 16 GB - the problem persists no matter which RAM is installed. All of the RAM also passes the memory tests in Rember and TechTool.
So, I need to find out if someone thinks that maybe the bluetooth module may be going bad causing the mouse issues. I also need to find out what is causing the memory leaks. I followed the steps that someone gave on this site to boot into safe mode, repair permissions, reset PRAM, then reset SMC (or the other way around - I did it like they said to). It did nothing to fix the problem.
I need some guidance here. As I stated early on, the machine worked perfectly with OS 10.9. I have WAY too much software that I use, so doing a completely fresh install is out of the question - I don't have time to reload everything. This problem is annoying and I know that I am not the only one having these issues. Any input will be greatly appreciated. Thanks in advance.Here is the EtreCheck report:
Problem description:
Memory leaks when using Toast 10 or Parallels 9. Mouse also become unresponsive (it will move, but left button does not work and dock will not pop open - mouse problem happens independent of the RAM being filled up - different mouse was tried with same result).
EtreCheck version: 2.1.5 (108)
Report generated January 9, 2015 at 9:20:59 PM MST
Click the [Support] links for help with non-Apple products.
Click the [Details] links for more information about that line.
Click the [Adware] links for help removing adware.
Hardware Information: ℹ️
Mac Pro (Early 2009) (Verified)
Mac Pro - model: MacPro4,1
2 2.26 GHz Quad-Core Intel Xeon CPU: 8-core
24 GB RAM Upgradeable
DIMM 1
4 GB DDR3 ECC 1066 MHz ok
DIMM 2
4 GB DDR3 ECC 1066 MHz ok
DIMM 3
2 GB DDR3 ECC 1066 MHz ok
DIMM 4
2 GB DDR3 ECC 1066 MHz ok
DIMM 5
4 GB DDR3 ECC 1066 MHz ok
DIMM 6
4 GB DDR3 ECC 1066 MHz ok
DIMM 7
2 GB DDR3 ECC 1066 MHz ok
DIMM 8
2 GB DDR3 ECC 1066 MHz ok
Bluetooth: Old - Handoff/Airdrop2 not supported
Wireless: en2: 802.11 a/b/g/n
Video Information: ℹ️
ATI Radeon HD 4870 - VRAM: 512 MB
AL2216W 1680 x 1050 @ 60 Hz
System Software: ℹ️
OS X 10.10.1 (14B25) - Uptime: 2:4:35
Disk Information: ℹ️
HL-DT-ST BD-RE WH12LS39
HL-DT-ST DVDRAM GH24NS90
SAMSUNG HD103SJ disk1 : (1 TB)
EFI (disk1s1) <not mounted> : 210 MB
OS 10.10.1 (disk1s2) / : 999.35 GB (410.30 GB free)
Recovery HD (disk1s3) <not mounted> [Recovery]: 650 MB
SAMSUNG HD103SJ disk2 : (1 TB)
EFI (disk2s1) <not mounted> : 210 MB
Extra Storage (disk2s2) /Volumes/Extra Storage : 999.86 GB (554.20 GB free)
SAMSUNG HD103SJ disk3 : (1 TB)
EFI (disk3s1) <not mounted> : 210 MB
Extra Storage 2 - Scratch (disk3s2) /Volumes/Extra Storage 2 - Scratch : 999.86 GB (39.54 GB free)
WDC WD5001AALS-00LWTA0 disk0 : (500.11 GB)
EFI (disk0s1) <not mounted> : 210 MB
BOOTCAMP (disk0s2) /Volumes/BOOTCAMP : 499.90 GB (275.71 GB free)
USB Information: ℹ️
Shuttle Technology Inc. E-USB Bridge
Sony C6606
Apple, Inc. Keyboard Hub
Apple Inc. Apple Keyboard
Apple Inc. BRCM2046 Hub
Apple Inc. Bluetooth USB Host Controller
Firewire Information: ℹ️
Apple Computer, Inc. iSight 200mbit - 400mbit max
Gatekeeper: ℹ️
Anywhere
Kernel Extensions: ℹ️
/Applications/Hotspot Shield.app
[not loaded] com.anchorfree.tun (1.0) [Support]
/Applications/Parallels Desktop.app
[not loaded] com.parallels.kext.hidhook (9.0 24251.1052177) [Support]
[not loaded] com.parallels.kext.hypervisor (9.0 24251.1052177) [Support]
[not loaded] com.parallels.kext.netbridge (9.0 24251.1052177) [Support]
[not loaded] com.parallels.kext.usbconnect (9.0 24251.1052177) [Support]
[not loaded] com.parallels.kext.vnic (9.0 24251.1052177) [Support]
/Applications/TechTool Deluxe.app
[not loaded] com.micromat.iokit.ttpatadriver (5.0.0) [Support]
[not loaded] com.micromat.iokit.ttpfwdriver (5.0.0) [Support]
/Applications/TechTool Protogo/Protogo Applications/TechTool Pro 7.app
[not loaded] com.micromat.driver.spdKernel (1 - SDK 10.8) [Support]
[not loaded] com.micromat.driver.spdKernel-10-8 (1 - SDK 10.8) [Support]
/Applications/Temperature Monitor 4.94/Temperature Monitor 4.94.app
[not loaded] com.bresink.driver.BRESINKx86Monitoring (8.0) [Support]
/Applications/Toast 11 Titanium/Spin Doctor.app
[not loaded] com.hzsystems.terminus.driver (4) [Support]
/Applications/Toast 7 Titanium/Toast Titanium.app
[not loaded] com.roxio.TDIXController (1.6) [Support]
/Library/Extensions
[loaded] at.obdev.nke.LittleSnitch (4216 - SDK 10.8) [Support]
/System/Library/Extensions
[loaded] com.SiliconImage.driver.Si3132 (1.2.5) [Support]
[not loaded] com.devguru.driver.SamsungComposite (1.2.63 - SDK 10.6) [Support]
[not loaded] com.microsoft.driver.MicrosoftMouse (8.2) [Support]
[not loaded] com.roxio.BluRaySupport (1.1.6) [Support]
/System/Library/Extensions/MicrosoftMouse.kext/Contents/PlugIns
[not loaded] com.microsoft.driver.MicrosoftMouseBluetooth (8.2) [Support]
[not loaded] com.microsoft.driver.MicrosoftMouseUSB (8.2) [Support]
/System/Library/Extensions/ssuddrv.kext/Contents/PlugIns
[not loaded] com.devguru.driver.SamsungACMControl (1.2.63 - SDK 10.6) [Support]
[not loaded] com.devguru.driver.SamsungACMData (1.2.63 - SDK 10.6) [Support]
[not loaded] com.devguru.driver.SamsungMTP (1.2.63 - SDK 10.5) [Support]
[not loaded] com.devguru.driver.SamsungSerial (1.2.63 - SDK 10.6) [Support]
Startup Items: ℹ️
HP IO: Path: /Library/StartupItems/HP IO
SiCoreService: Path: /Library/StartupItems/SiCoreService
Startup items are obsolete in OS X Yosemite
Launch Agents: ℹ️
[running] at.obdev.LittleSnitchUIAgent.plist [Support]
[loaded] com.coupons.coupond.plist [Support]
[running] com.micromat.TechToolProAgent.plist [Support]
[loaded] com.oracle.java.Java-Updater.plist [Support]
[invalid?] com.parallels.mobile.prl_deskctl_agent.launchagent.plist [Support]
[invalid?] com.parallels.mobile.startgui.launchagent.plist [Support]
[not loaded] com.teamviewer.teamviewer.plist [Support]
[not loaded] com.teamviewer.teamviewer_desktop.plist [Support]
Launch Daemons: ℹ️
[running] at.obdev.littlesnitchd.plist [Support]
[loaded] com.adobe.fpsaud.plist [Support]
[loaded] com.bombich.ccc.plist [Support]
[loaded] com.hp.lightscribe.plist [Support]
[running] com.micromat.TechToolProDaemon.plist [Support]
[loaded] com.microsoft.office.licensing.helper.plist [Support]
[loaded] com.oracle.java.Helper-Tool.plist [Support]
[invalid?] com.parallels.mobile.dispatcher.launchdaemon.plist [Support]
[failed] com.parallels.mobile.kextloader.launchdaemon.plist [Support] [Details]
[not loaded] com.teamviewer.teamviewer_service.plist [Support]
User Launch Agents: ℹ️
[loaded] com.facebook.videochat.[redacted].plist [Support]
[loaded] com.google.keystone.agent.plist [Support]
[running] com.nchsoftware.expressinvoice.agent.plist [Support]
[loaded] uk.co.markallan.clamxav.clamscan.plist [Support]
[loaded] uk.co.markallan.clamxav.freshclam.plist [Support]
User Login Items: ℹ️
iTunesHelper Application (/Applications/iTunes.app/Contents/MacOS/iTunesHelper.app)
SMARTReporter Application (/Applications/SMARTReporter/SMARTReporter.app)
BetterSnapTool Application (/Applications/BetterSnapTool.app)
smcFanControl Application (/Applications/smcfancontrol_2_2_2/smcFanControl.app)
Android File Transfer Agent Application (/Users/[redacted]/Library/Application Support/Google/Android File Transfer/Android File Transfer Agent.app)
Internet Plug-ins: ℹ️
JavaAppletPlugin: Version: Java 8 Update 25 Check version
FlashPlayer-10.6: Version: 16.0.0.235 - SDK 10.6 [Support]
Default Browser: Version: 600 - SDK 10.10
AdobePDFViewerNPAPI: Version: 11.0.06 - SDK 10.6 [Support]
CouponPrinter-FireFox_v2: Version: 5.0.3 - SDK 10.6 [Support]
AdobePDFViewer: Version: 11.0.06 - SDK 10.6 [Support]
Flash Player: Version: 16.0.0.235 - SDK 10.6 [Support]
QuickTime Plugin: Version: 7.7.3
SharePointBrowserPlugin: Version: 14.4.6 - SDK 10.6 [Support]
iPhotoPhotocast: Version: 7.0 - SDK 10.8
Safari Extensions: ℹ️
AdBlock [Installed]
F.B. Purity - Cleans Up Facebook [Installed]
OpenIE [Installed]
3rd Party Preference Panes: ℹ️
Déjà Vu [Support]
Flash Player [Support]
FUSE for OS X (OSXFUSE) [Support]
Java [Support]
MacFUSE [Support]
MenuMeters [Support]
Microsoft Mouse [Support]
MouseLocator [Support]
NTFS-3G [Support]
TechTool Protection [Support]
Time Machine: ℹ️
Time Machine not configured!
Top Processes by CPU: ℹ️
48% plugin-container
39% fontd
6% firefox
5% WindowServer
4% bluetoothaudiod
Top Processes by Memory: ℹ️
928 MB firefox
412 MB plugin-container
258 MB mds_stores
180 MB iTunes
129 MB Finder
Virtual Memory Information: ℹ️
19.38 GB Free RAM
3.11 GB Active RAM
1.88 GB Inactive RAM
1.38 GB Wired RAM
2.40 GB Page-ins
0 B Page-outs
Diagnostics Information: ℹ️
Jan 9, 2015, 07:16:57 PM Self test - passed
Jan 8, 2015, 11:37:48 AM /Library/Logs/DiagnosticReports/ClamXav_2015-01-08-113748_[redacted].cpu_resour ce.diag [Details]
Jan 8, 2015, 11:21:46 AM /Users/[redacted]/Library/Logs/DiagnosticReports/Preview_2015-01-08-112146_[red acted].crash
Maybe you are looking for
-
How to print page numbers like 'Page 2 of 10' on an ALV report
Hi, I've seen a few threads regarding this, but haven't seen any code that actually works. What I'd like to do is print page x of y (i.e. Page 2 of 10) on an ALV report once the report is printed. Is this actually possible? If so, what are the step
-
Restoring computer monitor's native resolution
Hi all, In the middle of downloading and installing Windows updates, updating drivers, and restarting the computer, my computer monitor's resolution somehow changed. I believe that the native resolution is 1400x1050, but I can't seem to find that un
-
Is there no primitive data type in LabVIEW 7 that corresponds to a 64-bit long int? [I guess LabVIEW would call it either I64 or U64...] Please, please tell me I'm wrong - if I'm right, this is an unacceptable state of affairs. And, if I'm right - wh
-
Why can't I toggle between current settings and defaults on the ACR basic panel?
When I try to toggle between current settings and defaults, I get a blue or black screen in the "After" image so I can not compare before and after. The toggle doesn't work when I am viewing a single image or when I am viewing before and after side-
-
Hello All, We are deploying a web application on Oracle 9i Application Server... But we face a load of problems every time: a) The list of OC4J components listed on the Enterprise Manager just disappeared from the console. This included the HTTP Serv