JTable memory retention
I have a scenario where I have a window whose contents (a JTable) don't seem to get GCd. A ran a profiler, and the only reference to my JTable is a sun.awt.im.CompositionAreaHandler.
Some background:
This is a desktop app using a JDesktopPane and JInternalFrames.
I run my app and profiler. I open a JInternalFrame that contains a small, simple JTable with some data.
I close (and dispose) the JInternalFrame, but the JTable object still exists. The path to the GC root from the profiler is:
MyJTable <-
clientComponent of sun.awt.im.CompositionAreaHandler <-
compositionAreaHandler of sun.awt.im.InputMethodContext <-
inputMethodWindowContext of sun.awt.im.InputContext [Class]I have waited, and forced GC, but the table still persists. As soon as I open another JInternalFrame (without my JTable in it), however, the table finally gets GCd.
What could my JTable possibly be doing that it's still being held on to? I have no idea what those Sun classes are or what they are doing.
The JTable in question is not a vanilla JTable. I have subclassed JTable, and done things like add Actions and mouselisteners and JPopupMenus to it. I assume this behavior is a consequence of one of these additional things I have done, but I have no clue what it may be, or how to even determine it.
Any ideas?
I don't think I am hanging onto the JInternalFrame anywhere.
I checked in the profiler, and there are no instances of JInternalFrames left.
I am using 1.6.0_04, I'll try the latest version and see if it makes any difference, although I probably won't be in a position to do so for a couple days.
Similar Messages
-
I have a legend that i use in my product that contains 2 color menu butons and some text. It used to be a graphic with all this stuff just painted on top of it and the two color menu buttons placed on top. I have converted it to a jtable with the color buttons and text loacated in the cells of the table. when i run a test on the old legend compared to the new legend, i get a memmory increase from 39 Mb to 52 Mb. I am just wondering if this is due to JTables using a lot more memory than my previouse implementation, or if this is some other underying problem. If any one could give me any insight into this issue I would really appreciate it. Thank you
just thought I'd bump this up once to see if I might get an answer.
-
Could this work on Nvidia boards as well
?( I found this on a Intel site about loading DDR ram and copied it.
Remove the AGP video card before installing or upgrading memory to avoid interference with the memory retention mechanism.
To be fully compliant with all applicable DDR SDRAM memory specifications, the board should be populated with DIMMs that support the Serial Presence Detect (SPD) data structure. This allows the BIOS to read the SPD data and program the chipset to accurately configure memory settings for optimum performance. If non-SPD memory is installed, the BIOS will attempt to correctly configure the memory settings, but performance and reliability may be impacted or the DIMMs may not function under the determined frequency.
I don't know if Nvidia supports SPD but it makes sense as the memory control chip maybe picking up some info from the DDR on the video card.
I can't test this myself as I still don't have a working MSI board.Thanks Wonkanoby you saved me a whole lot of time. I am so desperate to get my dual mem to work that I didn't even think about the mechanical end (mem retension) WAT A BONEHEAD I BE
What sisoft mem scores you getting in dual? I thinking of getting ram that works in dual but not sure if it's worth it.
I'am getting around 3100/93% & 2800 83%
Thanks -
SCJP: Is it worth it?
Is the SCJP certification considered to be impressive by most companies?
Can it make the difference between being hired or not?
ThanksIs the SCJP certification considered to beimpressive
by most companies?Depends on the who and the company and the country.
If a supervisor has taken and passed the exam, they
might be impressed. The exam is very difficult, even
for experience programmers.
The exam is difficult for many people, but NOT because of the topics being covered.
It's difficult because of the way the questions are worded, covering rather basic topics for the most part.
The simple fact that kids fresh out of college who've never programmed before can cram for it for a few weeks and get high scores (in the 90% range) first try says enough.
Now does it matter. Does the company actually check
with Sun to see if a candidate is telling the truth?
Has the company hired phony programmers in the past?
Ah. But a lot of phony programmers are guys having high scores at certification exams without ever having used the knowledge those exams are supposed to test.
>
Can it make the difference between being hired ornot?
I doubt it. Again, it depends on who is making the
decision and the requirements of the position.
Given 2 otherwise equally suitable candidates, it might make a difference.
Otherwise, it might hinder you (personally, and it was that way in several companies I worked in, I'd rather hire someone with more formal education than someone with a lot of certificates, especially if there was no work experience to back up those certs) .
Is it still worth it to take the exam? Yes, it will
be a good excercise. If you pass the exam, then youStudying for the exam can help highlight gaps in your knowledge, having a set date to gain that knowledge can be a good incentive to sit down with those books that you've had sitting in your bookcase but never got around to read.
That, and the satisfaction of a nice score, are the real benefits.
resume will NOT do the trick. There are many
programmers that put SCJP that never get certified
and never take the exam, yet they put it on their
resume and lie about their achievements. When theNever heard of that happening. It's fraud and can get you fired.
tough projects come, they typically fold under
pressure and leave or get their employment contract
axed.
Most people who end up like that DID in fact pass the exam but passed it without actually knowing their stuff.
They crammed for a few weeks, leaving them with short term memory retention of enough data to pass the exam but no real knowledge and long term retention (which comes only from actively using that knowledge for a prolonged period of time).
They then fail under pressure because they've forgotten everything again, just like what happens to many kids in school who don't do their homework but cram for tests.
And that is the Truth Ruth :o) -
Retentive memory on Compact RIO product
Hello everybody,
I'm developing an industrial application with a real time system cRIO.
In case of power down or a simply shutdown, the next boot I need to load data as set before.
I want to avoid heavy disk writing to preserve system life and CPU resources, so I'd like to know if there is a sort of retentive memory on theese systems.
The system should work stand alone without communicate with other devices.
Regards.Hi Marcello,
the cRIOs use a flash drive to store data as well as all OS relevant files. Your program is stored in the flash drive too.
On execution the program is loaded into RAM.
Please look up the specifications of your cRIO. You will find two values specifying flash size as well as RAM size!
Best regards,
GerdW
CLAD, using 2009SP1 + LV2011SP1 + LV2014SP1 on WinXP+Win7+cRIO
Kudos are welcome -
Cannot remove JTable from memory
Hi,
I am new to this forum so please forgive me if I make some naive errors. We are developing a component-based software in which the GUI can respond to a user's click to show a JTable in a JPanel. Because the loading of the JTable might take a while since some of our data can have a million columns (I cannot help that), we used a thread to manage the loading of the JTable. So the process is as followed:
1. In a method called "invokeThread", we first get an instance of the JTable as in the code (IVComponent is an interface that our JTable-derived table implements):
final IVComponent returnComponent = VComponentLoader.getVisualization(tableName);2. Then in the method "invokeThread", we start a thread and uses the SwingUtilities.invokeLater() to load the JTable:
Thread executeThread = new Thread ("Table Thread") {
public void run () {
SwingUtilities.invokeLater (new Runnable () {
public void run () {
loadTable(returnComponent);
executeThread.start ();3. The "loadTable" method is in the same class as the "invokeThread" class. It loads data into the JTable.
This works fine to load the data into the JTable. However, once the JTable's use is finished and the user wants to get rid of it to save on JVM memory, we allow the user to delete that JTable. Now the reason I am asking for help is that although we can set the JTable to null or set its TableColumnModel to null before setting JTable to null, we found that the TableColumns in the TableColumnModel are still on the heap using Eclipse's memory analyzer or Netbean's profiler. We were surprised that neither tool told us which object held them in memory, though.
We have looked on the web for a while. First we thought the "final" keyword might be the problem but using an instance variable for the class in which the method "invokeThread" resides did not help. We have seen other people reporting similar issues with other swing components but has yet to find a solution or a work-around that works for us.
Thanks in advance for your help.
JohnThanks, PhHein. If we can bribe the GC, we will :-).
I guess my question is whether this is something we need to do to ensure that GC will collect the memory once we set the JTable to null. From what we gathered on the web, one possible reason for the GC not to touch the JTable is that there is another reference to the JTable object (or its sub-components?) that we are not aware of. We saw a few posts mentioning the listeners added by a static object. Don't know if it applies to our situation because although we did not add any listener this way, we don't know whether by using JTable and TableColumnModel, a listener is added for us by a static object.
With limited exposure to the development community, we don't know the scope of the issue we encountered. We have seen a few bug reports in sun development network but they were quite old. If this is a well-known issue for Swing components that is yet to be fully addressed, then we have to bite the bullet for now. If there is a solution either offered by sun or by some experts, we will be grateful if you guys can point the way.
Best,
John -
How can I use retentive memory?
I need to make a report of good/bad parts in daily an mothly basis, I want to put this data on a indicator but a dont want that this value get lost went the operator turn of the machine at the end of the shift. Does anybody knows how can i use some retentive variable? or other solution?
This is pretty comnonly done with saving the values to an ini file. A more professional version would be saving to a network database so everyone could have access to the information at any time and without needing to run your program.
-
ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exi
Hi all,
suddenly our oracle 10g database stopped working. When we tried export the database following was the output
C:\Documents and Settings\Administrator>EXP PMIS/PMIS FILE=C:\PMIS.DMP
Export: Release 10.2.0.1.0 - Production on Wed Mar 25 16:15:08 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
EXP-00056: ORACLE error 1034 encountered
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
EXP-00005: all allowable logon attempts failed
EXP-00000: Export terminated unsuccessfullyalert log file had the output as
Wed Mar 25 16:02:12 2009
Starting ORACLE instance (normal)
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Picked latch-free SCN scheme 2
Using LOG_ARCHIVE_DEST_10 parameter default value as USE_DB_RECOVERY_FILE_DEST
Autotune of undo retention is turned on.
IMODE=BR
ILAT =10
LICENSE_MAX_USERS = 0
SYS auditing is disabled
ksdpec: called for event 13740 prior to event group initialization
Starting up ORACLE RDBMS Version: 10.2.0.1.0.
System parameters with non-default values:>sessions = 49
>__shared_pool_size = 71303168
>__large_pool_size = 8388608
>__java_pool_size = 4194304
>__streams_pool_size = 0
>spfile = C:\ORACLEXE\APP\ORACLE\PRODUCT\10.2.0\SERVER\DBS\SPFILEXE.ORA
>sga_target = 146800640
>control_files = C:\ORACLEXE\ORADATA\XE\CONTROL.DBF
>__db_cache_size = 58720256
>compatible = 10.2.0.1.0
>db_recovery_file_dest = C:\oraclexe\app\oracle\flash_recovery_area
>db_recovery_file_dest_size= 10737418240
>undo_management = AUTO
>undo_tablespace = UNDO
>remote_login_passwordfile= EXCLUSIVE
>dispatchers = (PROTOCOL=TCP) (SERVICE=XEXDB)
>shared_servers = 4
>job_queue_processes = 4
>audit_file_dest = C:\ORACLEXE\APP\ORACLE\ADMIN\XE\ADUMP
>background_dump_dest = C:\ORACLEXE\APP\ORACLE\ADMIN\XE\BDUMP
>user_dump_dest = C:\ORACLEXE\APP\ORACLE\ADMIN\XE\UDUMP
>core_dump_dest = C:\ORACLEXE\APP\ORACLE\ADMIN\XE\CDUMP
>db_name = XE
>open_cursors = 300
>os_authent_prefix =
>pga_aggregate_target = 41943040
PMON started with pid=2, OS id=1632
PSP0 started with pid=3, OS id=1312
MMAN started with pid=4, OS id=200
DBW0 started with pid=5, OS id=1864
LGWR started with pid=6, OS id=188
CKPT started with pid=7, OS id=1328
SMON started with pid=8, OS id=1848
RECO started with pid=9, OS id=1760
CJQ0 started with pid=10, OS id=1920
MMON started with pid=11, OS id=768
MMNL started with pid=12, OS id=948
Wed Mar 25 16:02:13 2009
starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...
starting up 4 shared server(s) ...
Oracle Data Guard is not available in this edition of Oracle.
Wed Mar 25 16:02:13 2009
alter database mount exclusive
Wed Mar 25 16:02:17 2009
Setting recovery target incarnation to 2
Wed Mar 25 16:02:17 2009
Successful mount of redo thread 1, with mount id 2563569989
Wed Mar 25 16:02:17 2009
Database mounted in Exclusive Mode
Completed: alter database mount exclusive
Wed Mar 25 16:02:17 2009
alter database open
Wed Mar 25 16:02:18 2009
Errors in file c:\oraclexe\app\oracle\admin\xe\bdump\xe_lgwr_188.trc:
ORA-00600: internal error code, arguments: [3700], [1], [15], [2], [2], [], [], []
Wed Mar 25 16:02:18 2009
Errors in file c:\oraclexe\app\oracle\admin\xe\bdump\xe_lgwr_188.trc:
ORA-00600: internal error code, arguments: [3700], [1], [15], [2], [2], [], [], []
Wed Mar 25 16:02:18 2009
LGWR: terminating instance due to error 470
Wed Mar 25 16:02:19 2009
Errors in file c:\oraclexe\app\oracle\admin\xe\bdump\xe_dbw0_1864.trc:
ORA-00470: LGWR process terminated with error
Wed Mar 25 16:02:19 2009
Errors in file c:\oraclexe\app\oracle\admin\xe\bdump\xe_ckpt_1328.trc:
ORA-00470: LGWR process terminated with error
Wed Mar 25 16:02:19 2009
Errors in file c:\oraclexe\app\oracle\admin\xe\bdump\xe_psp0_1312.trc:
ORA-00470: LGWR process terminated with error
Wed Mar 25 16:02:19 2009
Errors in file c:\oraclexe\app\oracle\admin\xe\bdump\xe_mman_200.trc:
ORA-00470: LGWR process terminated with error
Wed Mar 25 16:02:19 2009
Errors in file c:\oraclexe\app\oracle\admin\xe\bdump\xe_pmon_1632.trc:
ORA-00470: LGWR process terminated with error
Wed Mar 25 16:02:19 2009
Errors in file c:\oraclexe\app\oracle\admin\xe\bdump\xe_reco_1760.trc:
ORA-00470: LGWR process terminated with error
Wed Mar 25 16:02:19 2009
Errors in file c:\oraclexe\app\oracle\admin\xe\bdump\xe_smon_1848.trc:
ORA-00470: LGWR process terminated with error
Instance terminated by LGWR, pid = 188Again when we tried by connecting sqlplus following was output
SQL> connect sys/manager as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 146800640 bytes
Fixed Size 1286220 bytes
Variable Size 83890100 bytes
Database Buffers 58720256 bytes
Redo Buffers 2904064 bytes
Database mounted.
ORA-03113: end-of-file on communication channelWe actually need database dump for user PMIS, any help would be highly appreciatedHi Wim
You should say that "It may be Control File problem", but you shouldn't say that "it's due to Control File" problem
Please refer to Errors Documentation for more information on ORA-00600
http://download.oracle.com/docs/cd/B19306_01/server.102/b14219/e0.htm#sthref371
ORA-00600: internal error code, arguments: [string], [string], [string], [string], [string], [string], [string], [string]
Cause: This is the generic internal error number for Oracle program exceptions. This indicates that a process has encountered an exceptional condition.
Action: Report as a bug - the first argument is the internal error number
Kamran Agayev A. (10g OCP)
http://kamranagayev.wordpress.com -
JTable and ResultSet TableModel with big resultset
Hi, I have a question about JTable and a ResultSet TableModel.
I have to develop a swing JTable application that gets the data from a ResultSetTableModel where the user can update the jtable data.
The problem is the following:
the JTable have to contain the whole data of the source database table. Currently I have defined a
a TYPE_SCROLL_SENSITIVE & CONCUR_UPDATABLE statement.
The problem is that when I execute the query the whole ResultSet is "downloaded" on the client side application (my jtable) and I could receive (with big resultsets) an "out of memory error"...
I have investigate about the possibility of load (in the client side) only a small subset of the resultset but with no luck. In the maling lists I see that the only way to load the resultset incrementally is to define a forward only resultset with autocommit off, and using setFetchSize(...). But this solution doesn't solve my problem because if the user scrolls the entire table, the whole resultset will be downloaded...
In my opinion, there is only one solution:
- create a small JTable "cache structure" and update the structure with "remote calls" to the server ...
in other words I have to define on the server side a "servlet environment" that queries the database, creates the resultset and gives to the jtable only the data subsets that it needs... (alternatively I could define an RMI client/server distribuited applications...)
This is my solution, somebody can help me?
Are there others solutions for my problem?
Thanks in advance,
StefanoThe database table currently is about 80000 rows but the next year will be 200000 and so on ...
I know that excel has this limit but my JTable have to display more data than a simple excel work sheet.
I explain in more detail my solution:
whith a distribuited TableModel the whole tablemodel data are on the server side and not on the client (jtable).
The local JTable TableModel gets the values from a local (limited, 1000rows for example) structure, and when the user scroll up and down the jtable the TableModel updates this structure...
For example: initially the local JTable structure contains the rows from 0 to 1000;
the user scroll down, when the cell 800 (for example) have to be displayed the method:
getValueAt(800,...)
is called.
This method will update the table structure. Now, for example, the table structure will contain data for example from row 500 to row 1500 (the data from 0 to 499 are deleted)
In this way the local table model dimension will be indipendent from the real database table dimension ...
I hope that my solution is more clear now...
under these conditions the only solutions that can work have to implement a local tablemodel with limited dimension...
Another solution without servlet and rmi that I have found is the following:
update the local limited tablemodel structure quering the database server with select .... limit ... offset
but, the select ... limit ... offset is very dangerous when the offset is high because the database server have to do a sequential scan of all previuous records ...
with servlet (or RMI) solution instead, the entire resultset is on the server and I have only to request the data from the current resultset from row N to row N+1000 without no queries...
Thanks -
Working on following environment:
Platform -> Windows Server 2003 Version V5.2 Service Pack 2 32-bit
Oracle Database -> 10.2.0.1
My database was going to shutdown(auto) after 5 minutes of database startup. When I investigate alert log got following messages in it:
Memory Notification: Library Cache Object loaded into SGA
Heap size 2210K exceeds notification threshold (2048K)
KGL object name :XDB.XDbD/PLZ01TcHgNAgAIIegtw==
Errors in file d:\oracle10g\product\10.2.0\admin\ndb\bdump\ndb_ckpt_7024.trc:
ORA-04030: out of process memory when trying to allocate 8716 bytes (pga heap,Get krha asynch mem)
CKPT: terminating instance due to error 4030
Mon Mar 14 11:05:30 2011
Errors in file d:\oracle10g\product\10.2.0\admin\ndb\bdump\ndb_q001_5816.trc:
ORA-04030: out of process memory when trying to allocate bytes (,)
Then I follow metalink note 330239.1 and got the issue resolved related to "shutdown" but getting some new error messages in alert log. Please see the below error messages:
Thread 1 cannot allocate new log, sequence 77933
Private strand flush not complete
Current log# 2 seq# 77932 mem# 0: D:\ORACLE10G\PRODUCT\10.2.0\ORADATA\NDB\REDO0_02.LOG
Thread 1 advanced to log sequence 77933
Current log# 1 seq# 77933 mem# 0: D:\ORACLE10G\PRODUCT\10.2.0\ORADATA\NDB\REDO0_01.LOG
Mon Mar 14 12:34:08 2011
Errors in file d:\oracle10g\product\10.2.0\admin\ndb\bdump\ndb_smon_7300.trc:
ORA-00604: error occurred at recursive SQL level 2
ORA-04030: out of process memory when trying to allocate 404 bytes (Typecheck,seg:kggfaAllocSeg)
Mon Mar 14 12:49:00 2011
Errors in file d:\oracle10g\product\10.2.0\admin\ndb\bdump\ndb_j000_7060.trc:
ORA-12012: error on auto execute of job 27
ORA-04030: out of process memory when trying to allocate 16428 bytes (pga heap,kgh stack)
Mon Mar 14 12:49:34 2011
Process startup failed, error stack:
Mon Mar 14 12:49:35 2011
Errors in file d:\oracle10g\product\10.2.0\admin\ndb\bdump\ndb_psp0_6908.trc:
ORA-27300: OS system dependent operation:spcdr:9261:4200 failed with status: 997
ORA-27301: OS failure message: Overlapped I/O operation is in progress.
ORA-27302: failure occurred at: skgpspawn
Mon Mar 14 12:49:35 2011
Process J001 died, see its trace file
Mon Mar 14 12:49:35 2011
kkjcre1p: unable to spawn jobq slave process
Mon Mar 14 12:49:36 2011
Errors in file d:\oracle10g\product\10.2.0\admin\ndb\bdump\ndb_cjq0_6280.trc:
Mon Mar 14 12:53:51 2011
Errors in file d:\oracle10g\product\10.2.0\admin\ndb\bdump\ndb_j000_7060.trc:
ORA-07445: exception encountered: core dump [ACCESS_VIOLATION] [unable_to_trans_pc] [PC:0x603F1A55] [ADDR:0xBB] [UNABLE_TO_READ] []
Mon Mar 14 12:53:53 2011
Errors in file d:\oracle10g\product\10.2.0\admin\ndb\bdump\ndb_j000_7060.trc:
ORA-04030: out of process memory when trying to allocate 753120 bytes (pga heap,kco buffer)
ORA-07445: exception encountered: core dump [ACCESS_VIOLATION] [unable_to_trans_pc] [PC:0x603F1A55] [ADDR:0xBB] [UNABLE_TO_READ] []
Mon Mar 14 12:54:53 2011
Errors in file d:\oracle10g\product\10.2.0\admin\ndb\bdump\ndb_q000_5424.trc:
ORA-04030: out of process memory when trying to allocate 123404 bytes (QERHJ hash-joi,kllcqas:kllsltba)
Mon Mar 14 13:21:24 2011
Errors in file d:\oracle10g\product\10.2.0\admin\ndb\bdump\ndb_mmon_7444.trc:
ORA-00600: internal error code, arguments: [kspcsetsp3], [], [], [], [], [], [], []
Mon Mar 14 13:21:27 2011
Errors in file d:\oracle10g\product\10.2.0\admin\ndb\bdump\ndb_mmon_7444.trc:
ORA-00600: internal error code, arguments: [kmgs_parameter_update_timeout_1], [600], [], [], [], [], [], []
ORA-00600: internal error code, arguments: [kspcsetsp3], [], [], [], [], [], [], []
Mon Mar 14 13:22:26 2011
Restarting dead background process MMON
MMON started with pid=11, OS id=7304
Mon Mar 14 13:44:51 2011
Thread 1 advanced to log sequence 77934
Current log# 3 seq# 77934 mem# 0: D:\ORACLE10G\PRODUCT\10.2.0\ORADATA\NDB\REDO0_03.LOG
Mon Mar 14 13:51:20 2011
Thread 1 advanced to log sequence 77935
Current log# 2 seq# 77935 mem# 0: D:\ORACLE10G\PRODUCT\10.2.0\ORADATA\NDB\REDO0_02.LOG
kindly help me out in this, as this is PRODUCTION database.
Regards,Please see the parameter values extracted from the alert log:
Adjusting the default value of parameter parallel_max_servers
from 160 to 135 due to the value of parameter processes (150)
Mon Mar 14 12:18:53 2011
Starting ORACLE instance (normal)
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Picked latch-free SCN scheme 2
Using LOG_ARCHIVE_DEST_10 parameter default value as USE_DB_RECOVERY_FILE_DEST
Autotune of undo retention is turned on.
IMODE=BR
ILAT =18
LICENSE_MAX_USERS = 0
SYS auditing is disabled
ksdpec: called for event 13740 prior to event group initialization
Starting up ORACLE RDBMS Version: 10.2.0.1.0.
System parameters with non-default values:
processes = 150
sga_max_size = 1577058304
__shared_pool_size = 125829120
__large_pool_size = 8388608
__java_pool_size = 8388608
__streams_pool_size = 0
sga_target = 1258291200
control_files = D:\ORACLE10G\PRODUCT\10.2.0\ORADATA\NDB\CONTROL01.CTL, D:\ORACLE10G\PRODUCT\10.2.0\ORADATA\NDB\CONTROL02.CTL, D:\ORACLE10G\PRODUCT\10.2.0\ORADATA\NDB\CONTROL03.CTL
db_block_size = 8192
__db_cache_size = 1107296256
compatible = 10.2.0.1.0
db_files = 600
db_file_multiblock_read_count= 16
db_recovery_file_dest = d:\oracle10g\product\10.2.0/flash_recovery_area
db_recovery_file_dest_size= 2147483648
undo_management = AUTO
undo_tablespace = UNDOTBS2
kgllarge_heap_warning_threshold= 8388608
remote_login_passwordfile= EXCLUSIVE
db_domain =
dispatchers = (PROTOCOL=TCP) (SERVICE=ndbXDB)
job_queue_processes = 10
audit_file_dest = D:\ORACLE10G\PRODUCT\10.2.0\ADMIN\NDB\ADUMP
background_dump_dest = D:\ORACLE10G\PRODUCT\10.2.0\ADMIN\NDB\BDUMP
user_dump_dest = D:\ORACLE10G\PRODUCT\10.2.0\ADMIN\NDB\UDUMP
core_dump_dest = D:\ORACLE10G\PRODUCT\10.2.0\ADMIN\NDB\CDUMP
db_name = ndb
open_cursors = 300
pga_aggregate_target = 838860800
Regards,
Edited by: user12194837 on Mar 14, 2011 3:55 AM -
Dear friends
I searched how can I make a gride (like excel gride) in oracle form and I'll have the followin control : sort on column , resize column and move column between eachother, then I read I must use JTable with Bean Area in oracle form( I'm not sure is it correct or not), But I couldn't find how I can do it.
If I can do it with JTable and Bean Area please tell me step by step the method.
Thanks alotI don't know how to run java console, but on the form I get When New Record Instance from the beginning of form running.Nothing else.
Where is the Java console? How can I run it?
When I run the form and try to open sun java console from internet explorer, explorer closes.
While form is running before update I opened java.exe, it closes also.
Java Console things
Oracle JInitiator: Version 1.3.1.22
Using JRE version 1.3.1.22-internal Java HotSpot(TM) Client VM
User home directory = C:\Documents and Settings\JALEO
User has overriden browser's proxy settings.
Proxy Configuration: no proxy
JAR cache enabled
Location: C:\Documents and Settings\JALEO\Oracle Jar Cache
Maximum size: 50 MB
Compression level: 0
c: clear console window
f: finalize objects on finalization queue
g: garbage collect
h: display this help message
l: dump classloader list
m: print memory usage
q: hide console
s: dump system properties
t: dump thread list
x: clear classloader cache
0-5: set trace level to <n>
Loading http://jaleo.sarar.com.tr:8890/forms/java/frmall_jinit.jar from JAR cache
java.io.FileNotFoundException: File not found: http://jaleo.sarar.com.tr:8890/forms/java/icons.jar
at sun.plugin.protocol.jdk12.http.HttpURLConnection.getInputStream(Unknown Source)
at oracle.jre.protocol.jar.HttpUtils.followRedirects(Unknown Source)
at oracle.jre.protocol.jar.JarCache$CachedJarLoader.download(Unknown Source)
at oracle.jre.protocol.jar.JarCache$CachedJarLoader.load(Unknown Source)
at oracle.jre.protocol.jar.JarCache.get(Unknown Source)
at oracle.jre.protocol.jar.CachedJarURLConnection.connect(Unknown Source)
at oracle.jre.protocol.jar.CachedJarURLConnection.getJarFile(Unknown Source)
at sun.misc.URLClassPath$JarLoader.getJarFile(Unknown Source)
at sun.misc.URLClassPath$JarLoader.<init>(Unknown Source)
at sun.misc.URLClassPath$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.misc.URLClassPath.getLoader(Unknown Source)
at sun.misc.URLClassPath.getLoader(Unknown Source)
at sun.misc.URLClassPath.getResource(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at sun.applet.AppletClassLoader.findClass(Unknown Source)
at sun.plugin.security.PluginClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at oracle.ewt.util.FocusUtils.<clinit>(Unknown Source)
at oracle.ewt.lwAWT.LWComponent.<clinit>(Unknown Source)
at oracle.ewt.laf.oracle.OracleLookAndFeel._initCommonFixedDefaults(Unknown Source)
at oracle.ewt.laf.oracle.OracleLookAndFeel._getCommonDefaults(Unknown Source)
at oracle.ewt.laf.oracle.OracleLookAndFeel._getIndexedDefaults(Unknown Source)
at oracle.ewt.laf.oracle.OracleLookAndFeel.getDefaults(Unknown Source)
at oracle.ewt.lwAWT.BufferedApplet.getUIDefaults(Unknown Source)
at oracle.ewt.lwAWT.BufferedApplet.<init>(Unknown Source)
at oracle.ewt.swing.JBufferedApplet.<init>(Unknown Source)
at oracle.forms.engine.Main.<init>(Unknown Source)
at java.lang.Class.newInstance0(Native Method)
at java.lang.Class.newInstance(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.plugin.AppletViewer.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
WARNING: Unable to cache http://jaleo.sarar.com.tr:8890/forms/java/icons.jar
Loading http://jaleo.sarar.com.tr:8890/forms/java/frmwebutil.jar from JAR cache
Loading http://jaleo.sarar.com.tr:8890/forms/java/jacob.jar from JAR cache
Loading http://jaleo.sarar.com.tr:8890/forms/java/fjtable.jar from JAR cache
proxyHost=null
proxyPort=0
connectMode=HTTP, native.
Forms Applet version is : 10.1.2.0
SET_DECIMAL_SEPARATORS:.,
SET_DATE_FORMAT:dd/MM/yyyy
SET_NUM_FORMAT:#0.00
SET_INT_FORMAT:##########
SET_IMAGE_SIZE:200,-1
INIT:false
*** raz ***
SETSEPARATOR:^
SETARRAYSIZE:4,5
ArraySize : 4 columns 5 rows
SETHEADER:ROWID^^DEPTNO^^DNAME^^LOC
SET_COLS_TYPE:CHAR^INTEGER^CHAR^CHAR
SETDATA:AAAMjTAAEAAAAEEAAA^10^ACCOUNTING^lDAHO
SETDATA:AAAMjTAAEAAAAEEAAB^20^RESEARCH^DALLAS
SETDATA:AAAMjTAAEAAAAEEAAC^30^SALES^CHICAGO
SETDATA:AAAMjTAAEAAAAEEAAD^40^OPERATIONS^BOSTON
SETDATA:AAAMjTAAEAAAAEHAAA^50^INFORMATION^LA
SET_CELL_PROPERTY:ROWID|ENABLE|false
prop=ENABLE value:false
SET_CELL_PROPERTY:ROWID|WIDTH|5
prop=WIDTH value:5
SET_CELL_PROPERTY:ROWID|RESIZE|false
prop=RESIZE value:false
SET_CELL_PROPERTY:HIREDATE|BG_COLOR|230,230,255
prop=BG_COLOR value:230,230,255
Colulmn: HIREDATE not found. Unable to set property
SET_CELL_PROPERTY:SAL|BG_COLOR|230,255,255
prop=BG_COLOR value:230,255,255
Colulmn: SAL not found. Unable to set property
SET_CELL_PROPERTY:EMPNO|ENABLE|FALSE
prop=ENABLE value:FALSE
Colulmn: EMPNO not found. Unable to set property
SET_CELL_PROPERTY:EMPNO|FG_COLOR|100,100,100
prop=FG_COLOR value:100,100,100
Colulmn: EMPNO not found. Unable to set property
SET_CELL_PROPERTY:EMPNO|FONT|Tahoma|12|BI
prop=FONT value:Tahoma
Colulmn: EMPNO not found. Unable to set property
SET_CELL_PROPERTY:EMPNO|WIDTH|50
prop=WIDTH value:50
Colulmn: EMPNO not found. Unable to set property
SET_CELL_PROPERTY:EMPNO|MIN_WIDTH|40
prop=MIN_WIDTH value:40
Colulmn: EMPNO not found. Unable to set property
SET_CELL_PROPERTY:EMPNO|MAX_WIDTH|100
prop=MAX_WIDTH value:100
Colulmn: EMPNO not found. Unable to set property
SET_ROW_PROPERTY:HEIGHT|80
SET_CELL_PROPERTY:PHOTO|WIDTH|200
prop=WIDTH value:200
Colulmn: PHOTO not found. Unable to set property
SETBOUNDS:10,10,600,200
x=10 y=10 w=600 h=200
SETTITLE:Content of DEPT table
SETHEADBG:0,130,255
SETHEADFG:255,255,102
SETDATABG:255,255,255
SETUPDATE:TRUE
SHOW:FALSE
seperate=FALSE
Exception occurred during event dispatching:
java.lang.NoSuchMethodError
at oracle.forms.fd.FJTable$2.mousePressed(FJTable.java:1252)
at java.awt.AWTEventMulticaster.mousePressed(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at oracle.ewt.event.tracking.GlassMouseGrabProvider$Disp._redispatchEvent(Unknown Source)
at oracle.ewt.event.tracking.GlassMouseGrabProvider$Disp.mousePressed(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at oracle.ewt.lwAWT.LWComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at oracle.ewt.lwAWT.LWComponent.processEventImpl(Unknown Source)
at oracle.ewt.event.tracking.GlassMouseGrabProvider$Proxy.processEventImpl(Unknown Source)
at oracle.ewt.lwAWT.LWComponent.redispatchEvent(Unknown Source)
at oracle.ewt.lwAWT.LWComponent.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception occurred during event dispatching:
java.lang.NoSuchMethodError
at oracle.forms.fd.FJTable$2.mousePressed(FJTable.java:1252)
at java.awt.AWTEventMulticaster.mousePressed(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at oracle.ewt.event.tracking.GlassMouseGrabProvider$Disp._redispatchEvent(Unknown Source)
at oracle.ewt.event.tracking.GlassMouseGrabProvider$Disp.mousePressed(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at oracle.ewt.lwAWT.LWComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at oracle.ewt.lwAWT.LWComponent.processEventImpl(Unknown Source)
at oracle.ewt.event.tracking.GlassMouseGrabProvider$Proxy.processEventImpl(Unknown Source)
at oracle.ewt.lwAWT.LWComponent.redispatchEvent(Unknown Source)
at oracle.ewt.lwAWT.LWComponent.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source) -
Update JTable from String[][]
Hello everyone, I have a JTable with a slightly customized DefaultTableModel shown below:
DefaultTableModel tableModel = new DefaultTableModel(rowData, columnNames){
private static final long serialVersionUID = 8655602888381735851L;
@Override
public boolean isCellEditable(int row, int column)
return false;
};rowData is a String[][] of my data. When a user clicks a button, they add a row of data to the String[][]. I am wondering how I can update the JTable to reflect this change in the String[][]. Thanks!The problem with that is that I'm going to be performing various searches through the data, and those searches are performed on a TreeMap.
rowData gets its data from the TreeMap, and is then displayedThe active verb does not describe the situation accurately: according to your code, rowdata is merely built from the TreeMap instance, and stuffed into a DefaultTableModel for display.
When the user adds data, they add it to the TreeMap so that it can be searched.
I can easily convert the data from the TreeMap to the String[][], but I don't know how to "redraw" the table with the new data.I assume the data is too big to repeat the process each time the user adds a row (build the new String[][], wrap it into a new DefaultTableModel instance and set the instance as the table's model).
Another way is to duplicate the structure: when the user adds a row, add it into the searchable collection, and into the table model. But this costs twice the memory, and, again, I assume your data set is too large.
A third, probably more elegant way is to build your own TableModel implementation: it could store a reference to the TreeMap instance, and an array converting the table's row index values to the tree's key value. That way the table model can be described in the active mode:
"the JTable asks the model for cell values, and the model asks the tree for the corresponding data" :o) -
Hi All,
I am using JLabel as a cell of a JTable by overriding getTableCellRendererComponent method of the renderer.But I am not able to select/focus on any of the cell by clicking at cells.However If I use any other componenet like JTextArea, I can select any cell I want.
I have to use JLabel because i want to put multiple color and fonts in a single cell.I dont't want to use JTextPane because it takes more memory as well as It has wraping problem
Any help would be greatly appreciatedIt's not a good idea to create a NEW Component each and every time getXXXCellRenderer() is called. Object creation is VERY expensive!!!
Remember, this Component is merely renderered (e.g. painted, or "rubber-stamped") into the Graphics Context of the JTable, after appropriate sizing to fit the cell, of course. So the SAME component can be used to render each and every cell, each and every time each cell needs to be rendered. (Unless different Component classes are used to render different cells, but still, one of each of these Components should be created in the Constructor, not each time a cell is rendered.)
I have reworked your code to make it much more efficient, and to make it more readable:
public class MyTableCellRenderer
implements TableCellRenderer
JLabel label = new JLabel();
public MyTableCellRenderer()
super();
this.label.setOpaque(true);
public Component getTableCellRendererComponent( JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column )
String st=null;
st="<HTML><B><FONT Color=Red>" + value.toString()
+ "</FONT></B></HTML>";
this.label.setText(st);
if (isSelected) {
this.label.setBackground( table.getSelectionBackground());
} else {
this.label.setBackground(Color.yellow);
return this.label;
}You may find that using HTML as the text of JLabel is much too expensive, especially with a large table. I tried it once, with a table of only moderate size, and gave up. It's much faster to set the font, foreground color, etc., on the JLabel itself instead.
I was trying to use HTML simply to get HTML Character Entities (like &) to display correctly, and it just didn't work. I wrote my own class to parse strings for HTML Character Entities, replacing them with appropriate Unicode characters, and it worked much better.
---Mark -
we developed an application in beta version of jdeveloper.The things are fine excedpt the jtable component
It only display 36 rows though query returns more than that. Remaining rows are blank.
Now i ported this application in app server release2.0 problem is my row problem is solved but server gives out of memory error. Here is the configuration of server
IBM server on linux with 40 GB hard disk 2GB RAM running oracle 8.1 and app server
Pl help what could be the problem.
Is there any way by which i can solve the row problem of jtable on older server
thanksThis issue was reported as a bug in the earlier release of JDeveloper, I believe it is fixed in the 903 preview release
which is on OTN.
Regards
Grant Ronald
Product Management -
It seems there is a memory leak with JPopupMenu. The following program demonstrates this leak. If you run the program, click on show form, and then close the form, the used memory will be GCd appropriately. If you click on show form, then right click on the table to show the popup (even if you dont do anything else with the popup) then close the form, it never GCs the form. I've tried all kinds of crazy things, but I cant seem to find what is keeping the memory from being GCd.
Peter
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.beans.PropertyChangeListener;
import java.text.DecimalFormat;
import java.util.Timer;
import java.util.TimerTask;
import java.util.Vector;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.AbstractTableModel;
@SuppressWarnings("serial")
public class TriState extends JPanel {
private static final long K = 1024;
private static final long M = K * K;
private static final long G = M * K;
private static final long T = G * K;
protected static int ctr = 1;
private JButton btnShow = new JButton("Show Form");
private JLabel lblMem = new JLabel();
private static final DecimalFormat df = new DecimalFormat("#,##0.#");
protected Timer updateTimer = new Timer();
public TriState() {
this.setLayout(new GridLayout());
add(btnShow);
add(lblMem);
updateTimer.scheduleAtFixedRate(new UpdateTimerTask(), 1000, 1000);
btnShow.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
FrmReferrals fr = new FrmReferrals();
fr.setVisible(true);
class UpdateTimerTask extends TimerTask {
public void run() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
dumpMemoryUsage();
protected void dumpMemoryUsage() {
System.gc();
Long t = Runtime.getRuntime().totalMemory();
long f = Runtime.getRuntime().freeMemory();
String st = convertToStringRepresentation(t);
String sf = convertToStringRepresentation(f);
String su = convertToStringRepresentation(t - f);
System.out.println("Total:" + st + "(" + t + ") Free:" + sf + "(" + f + ") Used:" + su + "(" + (t - f) + ")");
lblMem.setText(su + "/" + st);
public static String convertToStringRepresentation(final long value) {
final long[] dividers = new long[]{T, G, M, K, 1};
final String[] units = new String[]{"TB", "GB", "MB", "KB", "B"};
if (value < 1)
throw new IllegalArgumentException("Invalid file size: " + value);
String result = null;
for (int i = 0; i < dividers.length; i++) {
final long divider = dividers;
if (value >= divider) {
final double dr = divider > 1 ? (double) value / (double) divider : (double) value;
result = df.format(dr) + units[i];
break;
return result;
private static void createAndShowGUI() {
JFrame frame = new JFrame("SimpleTableDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Create and set up the content pane.
TriState newContentPane = new TriState();
newContentPane.setOpaque(true); // content panes must be opaque
frame.setContentPane(newContentPane);
// Display the window.
frame.pack();
frame.setVisible(true);
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
protected class PopupMenu extends JPopupMenu {
public PopupMenu() {
JRadioButtonMenuItem item1 = new JRadioButtonMenuItem(new AbstractAction("Insert Item") {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand());
item1.setActionCommand("Insert");
add(item1);
JRadioButtonMenuItem item2 = new JRadioButtonMenuItem(new AbstractAction("Delete Item") {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand());
item2.setActionCommand("Delete");
add(item2);
public class FrmReferrals extends JFrame {
public FrmReferrals() {
super();
init();
protected void init() {
jbInit();
protected void closeIt() {
uninit();
// variables here
protected Dimension dimPreferred = new Dimension(1270, 995);
protected JTabbedPane tabbedPane = new JTabbedPane();
protected JTable tblReferrals = null;
protected PopupMenu popMenu = new PopupMenu();
protected void jbInit() {
setPreferredSize(dimPreferred);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setTitle("Referrals");
JPanel pnl = new JPanel();
pnl.setOpaque(false);
pnl.setLayout(new BorderLayout());
pnl.add(tabbedPane, BorderLayout.CENTER);
// put it all in the frame
add(pnl);
pack();
setLocationRelativeTo(null);
// init the table and model
ReferralsTableModel ctm = new ReferralsTableModel(buildDummyVector());
tblReferrals = new JTable(ctm);
tblReferrals.setComponentPopupMenu(popMenu);
tblReferrals.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
tabbedPane.add(new JScrollPane(tblReferrals, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED));
addWindowListener(new WindowListener() {
@Override
public void windowActivated(WindowEvent e) {}
@Override
public void windowClosed(WindowEvent e) {}
@Override
public void windowClosing(WindowEvent e) {
closeIt();
@Override
public void windowDeactivated(WindowEvent e) {}
@Override
public void windowDeiconified(WindowEvent e) {}
@Override
public void windowIconified(WindowEvent e) {}
@Override
public void windowOpened(WindowEvent e) {}
protected Vector<DBO_Referrals> buildDummyVector() {
Vector<DBO_Referrals> vr = new Vector<DBO_Referrals>();
for (int x = 0; x < 5000; x++) {
DBO_Referrals r = new DBO_Referrals(x+(5000*ctr));
vr.add(r);
return vr;
protected void uninit() {
tblReferrals.setComponentPopupMenu(null);
for (Component c : popMenu.getComponents()) {
PropertyChangeListener[] pl = c.getPropertyChangeListeners();
for (PropertyChangeListener l : pl)
c.removePropertyChangeListener(l);
if (c instanceof JMenuItem) {
ActionListener [] al = ((JMenuItem)c).getActionListeners();
for (ActionListener l : al) {
((JMenuItem)c).removeActionListener(l);
popMenu = null;
protected class DBO_Referrals {
protected long id;
protected String Employee;
protected String Rep;
protected String Asst;
protected String Client;
protected String Dates;
protected String Status;
protected String Home;
public DBO_Referrals(long id) {
this.id = id;
Employee = "Employee" + id;
Rep = "Rep" + id;
Asst = "Asst" + id;
Client = "Client" + id;
Dates = "Dates" + id;
Status = "Status" + id;
Home = "Home" + id;
public long getId() {
return id;
public String getEmployee() {
return Employee;
public String getRep() {
return Rep;
public String getAsst() {
return Asst;
public String getClient() {
return Client;
public String getDates() {
return Dates;
public String getStatus() {
return Status;
public String getHome() {
return Home;
public class ReferralsTableModel extends AbstractTableModel {
protected Vector<DBO_Referrals> data = new Vector<DBO_Referrals>();
protected String[] sColumns = {"id", "Employee", "Rep", "Assistant", "Client", "Date", "Status", "Home", "R"};
public ReferralsTableModel() {
super();
public ReferralsTableModel(Vector<DBO_Referrals> data) {
this();
this.data = data;
@SuppressWarnings("unchecked")
@Override
public Class getColumnClass(int col) {
switch (col) {
case 0 :
return Long.class;
default :
return String.class;
@Override
public int getColumnCount() {
return sColumns.length;
@Override
public int getRowCount() {
return data.size();
@Override
public Object getValueAt(int row, int col) {
if (row > data.size())
return null;
DBO_Referrals a = data.get(row);
switch (col) {
case 0 :
return a.getId();
case 1 :
return a.getEmployee();
case 2 :
return a.getRep();
case 3 :
return a.getAsst();
case 4 :
return a.getClient();
case 5 :
return a.getDates();
case 6 :
return a.getStatus();
case 7 :
return a.getHome();
case 8 :
return "+";
default :
return null;BTW instead of continually printing out the memory use a profiler (jvisualvm in the jdk/bin directory -> heapdump -> search on your class -> view in instances -> find nearest GC root).
Looks like BasicPopupMenuUI doesn't remove a reference to the JRootPane immediately. As far as I can see it will be removed when another menu shows.
As a hackish workaround you can try this in you FrmReferrals#uninit():
for(ChangeListener listener : MenuSelectionManager.defaultManager().getChangeListeners()) {
if (listener.getClass().getName().contains("MenuKeyboardHelper")) {
try {
Field field = listener.getClass().getDeclaredField("menuInputMap");
field.setAccessible(true);
field.set(listener, null);
} catch (Exception e) {
// ignored
break;
}Funnily enough though it isn't there when I reduce your code to a SSCCE:
import java.awt.*;
import javax.swing.*;
public class TestBasicPopupMenuUILeak extends JFrame {
public TestBasicPopupMenuUILeak() {
super("Not collected right away");
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(
new JButton(new AbstractAction("Show frame") {
@Override
public void actionPerformed(ActionEvent e) {
EventQueue.invokeLater(new Runnable() {
public void run() {
JLabel label = new JLabel(
"Right click to show popup, then close this frame."
+ "The frame with not be GCed until another (popup) menu is shown.");
JPopupMenu popup = new JPopupMenu(
"Popup");
popup.add("Item");
label.setComponentPopupMenu(popup);
// named differently so you can find it
// easily in your favorite profiler
JFrame frame = new TestBasicPopupMenuUILeak();
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(label);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
Maybe you are looking for
-
Open the application multiple times in the same instance
Hello, we are creating a swing application, using the following standard code: SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); Every time we call our program, it opens a new application. If we call it twice, 2 appl
-
PAN Newsreader & multipart binaries
PAN (133-4) has stopped being able to preview images is they are multipart (single part images are still OK). I get the following message: Attachment not shown: MIME type image/jpeg; filename 199.jpg Any ideas?
-
Pros / Cons of Running APEX on separate server
Seeking feedback/thoughts on this general question. I am maintaining an APEX application that utilizes multiple schemas all residing in the same database as APEX. I am wondering what might be the pros / cons of putting APEX in a separate database and
-
Different Applications on different Servers
Hi all, How to configure the access by differents applications on different OC4Js ? For example: The application A (contains JSPs) is installed on OC4J 1 and application B (contains EJBs) is installed on OC4J 2, the application B must be accessed by
-
Please let me know the licence details. Shall i have to pay any thing if i want to use in production environment.