Is there a flowchart describing gc behaviour of the Sun hotspot jvm?

Given that garbage collector tuning is such an important part of application deployment it is surprising that the behaviour of the garbage collector implemented in the Sun JVM is so poorly documented.
Our system is displaying behaviour changes that we don't expect and do not want and it we can't find enough information to predict how the garbage collector will behave under expected and changing conditions. This makes it impossible to select sensible parameters for our system.
For example, we have included the -Xincgc option when running a weblogic6.0 server to reduce the size of the gc pauses. Monitoring the memory (both on the weblogic console and via -verbose:gc) we have small gcs happening quite frequently but after a couple of hours it switches over to full gcs and stays that way for ever after. The full gcs bring on the longer delays for garbage collection (typically around 5 seconds) every 5 minutes or so.
Incidentally, we assume the small gcs are the incremental gcs performed on the old area but there is no way to distinguish those from the little scavenging gcs that are performed even without -Xincgc.
The total memory used is quite modest (1/4 to 1/2 the size generally) compared to the max heap size and the old area and comparable to the new area.
If there is a flowchart or uml activity diagram that describes the hotspot gc behaviour so that we could be a little more deterministic in our approach to gc tuning I would be most grateful to get access to it. This trial and error approach is very frustrating.
There's some very useful information out there about the structure of the java heap and the meaning of the various options and even the garbage collection algorithms themselves but it is not sufficient to specify the behaviour of the specific hotspot jvm from Sun Microsystems.
I liken it to having a class diagram describing a highly dynamic system but no interaction diagrams.

I would also love to have a comprehensive explanation of garbage collection in Java. I'm still mystified by it in some respects.
The author of this thread has obviously researched Java GC... don't know if this helps, but someone in another thread posted this link to a JDC Tech Tips issue concerning memory allocation and GC:
http://developer.java.sun.com/developer/TechTips/2000/tt1222.html
Also the links near the bottom may be worth checking out...
There's something in that web page that I still don't understand and I think I will post a message about it soon.

Similar Messages

  • My laptop recently crashed and is unsalvagable with my itunes library on it.  My ipod touch has all of my music still on it.  Is there a way that I can put the songs on my ipod onto itunes on my new computer??

    My laptop recently crashed and is unsalvageable with my itunes library on it.  My ipod still has all of my music still on it. 
    Is there a way that I can put the songs on my ipod onto itunes on my new computer without loosing them or having to buy them all over again?

    Syncing to a new iTunes library or computer will erase your ipod. Only if you back up your iPod manually before syncing, you can restore your device from that backup again. A manual backup does not include the sync process.
    Disable autosync in iTunes, connect your iPod to your new computer and right click on it in the device list and choose backup. iTunes will backup your ipod without syncing.
    Transfer your purchases the same way, choosing "transfer purchases" this time.
    When you connect your iPod for the first time, all media content will be erased. But you can restore your settings and app data from your manual backup afterwards.
    Don't forget to set up at least one contact and event on your new computer to be able to merge calendars and contacts when you sync the ipod for the first time.
    Music is one way only, from the computer to your device, unless you bought the songs in itunes and transferred your purchases.
    There is 3rd party software out there, but not supported by Apple, see this thread:http://discussions.apple.com/thread.jspa?threadID=2013615&tstart=0
    About backups and what's saved: http://support.apple.com/kb/HT4946
    How to back up and restore:http://support.apple.com/kb/HT1414
    How to download apps for free again:http://support.apple.com/kb/HT2519
    Saving other data is also described here. How to back up your data and set up as a new device

  • Default behaviour of the Escape key while editing a cell in JTable??

    Hi all,
    i have a Jtable which get its data from an own model object which extends DefaultTableModel.
    If i overwrite the isCellEditable(row, col) method within the tablemodel object and set a specific column to editable, then i notice while editing a cell in that column that the default behaviour of the Escape key is that independet from what you have entered before in to the cell the editing stops and the cell gets the value it had before editing.
    This is the case for me even if i apply a custom editor to a column (one that extends DefaultCellEditor). It is just a JTextField that limits the number of digits a user can enter. Everything works fine. If the user edits the cell and presses ENTER or the "down arrow key" i can check what he has entered with the help of the getCellEditorValue() method. But if the user hits the ESC key after editing a cell this method is not invoked!!!
    My question is :
    is there any way to detect that the user cancels editing with the ESC-key.
    this is very important for me because if the user goes editing the cell i lock the related record in the database, if i cannot detect this it is locked till the application terminates.
    Thanks for any help in advance

    I try override the JTable editingCanceled() ==> does not work.
    I try the addCellEditorListener( CellEditorListener l ) ==> does not work.
    Finally, I try the addKeyListener ==> it works.
    Here is a quick demo. program:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.event.*;
    import javax.swing.table.*;
    public class Test {
    public static void main(String[] args){
    JFrame f = new JFrame();
    String[] colName = {"a", "b"};
    String[][] rowData = {{"1", "2"}, {"3", "4"}};
    JTable table = new JTable(rowData, colName);
    JTextField t = new JTextField(10);
    t.setBackground(Color.red);
    t.addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent e) {
    if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
    // do what ever you want ex. un-lock table
    System.out.println("ESCAPE");
    DefaultCellEditor editor = new DefaultCellEditor(t);
    TableColumnModel colModel = table.getColumnModel();
    for (int i = colModel.getColumnCount()-1; i >= 0; i--) {
    colModel.getColumn(i).setCellEditor(editor);
    f.setContentPane(new JScrollPane(table));
    f.pack();
    f.setVisible(true);

  • My Black Macbook froze using Safari.  I forced quit and restarted.  Before the chimes there was a single buzz, from below the keyboard.  What's that all about?

    My Black Macbook froze using Safari.  I forced quit and restarted.  Before the chime, there was a single buzz, from below the keyboard.  What's that all about?

    http://support.apple.com/kb/HT2341
    Might be RAM related if the above tip describes what happened.
    If not, and your data is not backed up, and it won't startup, read this tip:
    https://discussions.apple.com/docs/DOC-1689

  • Behaviour of the brackets in a Select clause

    Dear Readers,
    I can't understand why I get 2 different results on running with a Bracket I get NULL and without a bracket I get the declared variable value which is Noname
    Below is Query 1:
    Declare @testvar char(20)
    Set @testvar = 'noname'
    Select @testvar= pub_name
    FROM publishers
    WHERE  pub_id= '999'
    Select @testvar
    Out put of this query is 'Noname'
    BUT when I type the same query in the following manner I get Null-------Please note that the only difference between this query below is I used brackets and Select  in the Select@testvar statement
    Declare @testvar char(20)
    Set @testvar = 'noname'
    Select @testvar=(Select pub_name
    FROM publishers
    WHERE  pub_id= '999')
    Select @testvar
    Thank-you

    Yes, this is plain-table valued query:
    Select au_id
    From Authors
    WHERE 1=0
    But here
    Select(Select au_id
    FROM authors
    WHERE 1=0)
    you have a query on the form
       SELECT (scalar value)
    The scalar value in this case is a subquery, a scalar subquery. A scalar subquery always returns a single row. If the set returned by the query is empty, the scalar return value is NULL. If the set includes more than one value, this is an error.
    A different way to describe this is that the context is scalar, and this is why the subquery is scalar. All values in a SELECT list must be scalar with regards to the row returned. If you say
    SELECT expr FROM tbl
    And there are five rows in table, the query will return five rows. If expr is a nested query, this cannot lead to the query returning 3 or 33 rows. The query will return five rows, period.
    There is also:
     Select au_id
     FROM  (Select au_id
            FROM authors
            WHERE 1=0) AS k
    Here the context is tabular, and in this example you will get no rows back. With a diffrent WHERE clause you can get many rows back.
    Erland Sommarskog, SQL Server MVP, [email protected]

  • ProC: DESCRIBE INPUT not generating the correct no of bind variables

    Hi
    I'm having an issue with ProC using the ANSI dynamic SQL where after using DESCRIBE INPUT to full the descriptor with the bind variable information, the subsequent call to GET DESCRIPTOR... :bind_count = COUNT returns 0. The SQL statement is a select along the lines of: select col_01 from tab_01 where col_02 = :bind_var.
    Any idea on what the issue could be?
    Dale

    Forgot to add:
    If I attempt to OPEN the CURSOR, I get ORA-01008: not all variables bound. If I force the code to assume there is 1 bind variable (as the select in question has one), when I then assign the c variable to the DESCRIPTOR I get SQL-02122: Invalid OPEN or PREPARE for this database connection.
    The AT command has been used where it is required and the correct connection is specified for each occurance of the AT in the various embedded EXEC SQL statements.
    Dale

  • Strange behaviour of the rangeSize - or is it desired?

    Hi there,
    as recently asked in Difference between VO Fetch Size, Iterator rangeSize and af:table Fetch Siz we have a problem with the rangeSize property of the iterator binding.
    First of all, we're currently working wit JDev version 11.1.2.2.0. So, we have a page with a table. In this table is nested inside a panel collection which is nested inside a panel stretch layout. To cut a long story short, it stretches.
    The rangeSize is now set to the default 25, but you could see in the fullscreen usage about 35 rows. When we now select a row which is in the rage of the first 25 records and use the data in such a method:
    RichTable table = this.getTable();
    RowKeySet rowKeySet = table.getSelectedRowKeys();
    Iterator selectetNodesIterator = rowKeySet.iterator();
    CollectionModel treeModel = (CollectionModel)table.getValue();
    JUCtrlHierBinding treeBinding = (JUCtrlHierBinding)treeModel.getWrappedData();
    while (selectetNodesIterator.hasNext()) {
      List selectedRowKeyPath = (List)selectetNodesIterator.next();
      JUCtrlHierNodeBinding nodeBinding = treeBinding.findNodeByKeyPath(selectedRowKeyPath);
      Row row = nodeBinding.getRow();
      DBSequence aaId = (DBSequence)row.getAttribute("AaId");
    }We got a NPE at Row row = nodeBinding.getRow();, because the nodeBinding is null. Only the last fetched records have a JUCtrlHierNodeBinding.
    So yeah ok, for testing purposes we changed the rangeSize to 1, just to see what happens. And again it fetches one row after another as long is the tables current view is full. And if we try it again every record results in a NPE excpet the very last visible record. So far so good, after what we've seen with 25 records this was expected.
    When we change the rangeSize to a value greater than 36 (the visible rows, in that current fullscreen resolution) it works as it should.
    So, to see if there is a bug i decided to create a small testapp with the HR schema. I've just dropped the employees vo as a table inside a panel collection which is nested inside a panle stretch layout. And used nearly the same method:
    public String onButtonClicked() {
      RowKeySet rks = table.getSelectedRowKeys();
      CollectionModel tablemodel = (CollectionModel)table.getValue();
      JUCtrlHierBinding binding = (JUCtrlHierBinding)tablemodel.getWrappedData();
      Iterator it = rks.iterator();
      while(it.hasNext()){
        List selectedRowKeyPath = (List)it.next();
        JUCtrlHierNodeBinding node = binding.findNodeByKeyPath(selectedRowKeyPath);
        Row row = node.getRow();
        System.out.println("Testausgabe: " + row.getAttribute(1));
      return null;
    }When the rangeSize is now set to 1 every visible row except the last also result in a NPE. If we run that above code on a button click, but now the strange part. When the rangeSize is changed to a value greater 1 it works like a charm. You can run that code with every visible record an you get now NPE. Also very strange with a rangeSize = 1, when you select the last visible record which is working and run the code, then select a record above, which had thrown an NPE previously and run the code. It is working, but with the value of the last visible record.
    This leads us to a bunch of questions.
    1) Is it the supposed way to work, that you get a NPE when the rangeSize is set to a smaller number than visible rows?
    2) If 1) is the desired way, how do you handle the rangeSize for a table which is stretched? You couldn't now how many rows you could see.
    3) Does anyone have an idea how to explain the last explained behaviour with the testapp? (I could upload it)
    Thanks in advance.
    Alex

    Hi Alex,
    can you open a SR at Oracle support for this issue?
    I know there are several bugs which are somehow related with the rangeSize and the synchronization of the model (currrent row) and the view (in this case the visible part of af:table).
    See also Restore current row after rollback does not work with page ranging
    As far I know Oracle plans some enhancements in this area to fix the syncronize problems and change e.g. the rangeSize dynamically depending on the number of rows visible in the GUI.
    But anyway your issue sounds like a new bug.
    regards
    Peter

  • Is there a way to disable touch on the Helix and get a power management for battery cycles?

    As the title describes.
    I've been drawing a fair bit on the Helix using photoshop but what to find a way to disable touch. I used to be able to do it on my x220t through the control panel>isd tablet settings. Windows 8 doesn't have that option. Please don't mention palm rejection as it doesn't always work.
    Also I'd live to know if there is a battery gauge to show the battery cycle of the helix. I know the battery is in good condition. What i'd like to know is the cycles of both batteries.

    So I have found a temp work-around that does the deed.  I have been using a lot of autodesk sketch, and its bomb if you don't have to worry about your hand touching the screen while you sketch.  Here is how I have been doing it.
    WIN+X >> Device Manager >> Human Interface Devices >> 
    Under this section you will find three USB Drivers installed.  I found that if I desable the second USB Driver, then the touch screen stops working, but the Digitizer still works 100%.  Just re-enable when you want to use the touch again.  I really wish Lenovo had software to take care of this out of the box.  But as I said, It works for the time being.

  • Is there a way to decorelate annotations from the source code?

    sorry : the title of the question may sound bizarre but , not being a native speaker, I do not know how to precisely state my problem.
    I'll try:
    an example: suppose you want to annotate your code with annotation such as @MightBeNull (a fictitious annotation) to mark a field as being potentially null.
    this annotation is going to be used by annotation processor X and is specified by (fictitious) library org.something.staticcheck ...
    Now if a new (and better) tool appears for the same purpose you'll have to change your code. At compile time your code is dependent on a precise library (and a set of precise tools for annotation processing).
    I my dreams I would like a way to write my own annotations and configure an adapter that redirects to the precise library that I choose at given moment.
    For sure that cannot be so easy since adaptations could not fit easily (but let's forget it for the moment).
    This seems impossible ... or it is?
    ( a better way could be to annotate not the source code itself but a separate description of its features that could be annotated independently)

    Sorry bruce I am a bit slow: I don't understand your suggestion.
    if I have a code like that:
    import org.staticcheck.annotations.MightBeNull ;
    public class Thing {
           @MighBeNull private Something relation;
    }my code is dependent on library "org.staticcheck.annotations".
    then afterwards if I change for another tool that uses annotation
        com.newprovider.annotations.CouldBeNullI am obliged to modify my source code!
    I daresay I am tempted by hacks such as :
    import com.mybusiness.annotations.MetaAnnotation ;
    public class Thing {
           @MetaAnnotation("null_possible") private Something relation;
    }and then perform some precompile wizardry (thru a preprocessor ;-( or tricky annotation processor
    that transforms the source code). But it could turn out ugly/clumsy ....
    that means that there will be a resource for describing a "translation" from the MetaAnnotation to the
    real thing needed at a precise moment.
    So my question is: has someone found a way to do that elegantly? (btw I can think of many more reasons for this decorrelation between
    the source code and its annotations).

  • TS4062 I cannot get a WiFi signal, which means that I cannot access all of the other features on my ipod. Is there anyway I can access all of the other features without Siri or WiFi?

    I cannot get a WiFi signal, which means that I cannot access all of the other features on my ipod. Is there anyway I can access all of the other features without Siri or WiFi?

    Hi. The two user tips both describe a sequence of steps that should get your library from the point where it threatens to wipe data from your device to where it is syncing normally, while recovering as much information as possible. It may still be necessary to wipe and reload the device but this should only take place once all the data that can be recovered has been recovered.
    Doing step 1 of 8 and then complaining things aren't the way you want them to be yet strikes me as premature...
    Since you appear to have all your media content, and we are discussing an iPod classic, not an iOS device, the main worries are already taken care of. What's left is ratings, playcounts, playlist membership and checked status. Since your device holds only part of your library at best you could only recover the missing data for the content that is on the device using third party tools.
    Recreating the previous checked/unchecked status of every track in your library from where you are now may not be that easy. Syncing with selected playlists has many advantages, one of which would have been that you would have a named playlist that could have been retrieved by 3rd party software if you had used this method.
    You haven't explained what caused your problem in the first place, but if you have a Previous iTunes Libraries folder holding old copies of your iTunes database (generated with each iTunes update) then it would be possible to restore the most recent of these and then update the library with any changes in your media folder.
    BTW Apple doesn't offer free support for this kind of issue with iTunes.
    tt2

  • The strange behaviour of the notification

    Coherence 3.3.1/389
         .Net API 3.3.1.2
         I have C++ GUI client with grid. It shows in the grid all updates from Coherence.
         I have also the 'server' application, which inserts objects into Coherence (1 - 2 per second).
         I use 'near-scheme' with front set to local-scheme and back set to remote-cache-scheme.
         I have 3 GUI clients connected to the Coherence and i have the strange behaviour of the clients. The insert comes to one of them three times instead of one. I've checked in the debugger and it's true. The insert really comes three times. But when i've restarted the client all became to work fine.
         It's bad that i can't repeat this situation, it happens from time to time.
         Does anybody get the same situation?
         I've masked it by the checking key and version of object, but it's really strangely.
         Thanks.

    I think it's depended on the situation described in thread CacheEventFilter: Where does the filter part apply?
         Many thanks.

  • I updated itunes now itunes says there is a problem and shuts down the program everytime I open it.

    I updated itunes now itunes says there is a problem and shuts down the program everytime I open it.

    Hello there, cskilli.
    The following Knowledge Base article offers up some great, in-depth and practical steps for troubleshooting the issue you're describing:
    iTunes for Windows Vista, Windows 7, or Windows 8: Fix unexpected quits or launch issues
    http://support.apple.com/kb/ts1717
    Thanks for reaching out to Apple Support Communities.
    Cheers,
    Pedro.

  • Strange behaviour of the forum website

    Since yesterday I observe a strange behaviour of the forum website:
    There is a thread by Foto-Gabriela called "LR 3.4 crashes after some hours of work with very strange behaviour"
    When I select "All threads" I cannot see this thread, but when I select "Open questions", it is visible.
    It says that there are 6 answers. When I click on the thread, it comes up with only 3 answers visible.
    What's going on, here?
    WW

    function(){return A.apply(null,[this].concat($A(arguments)))}
    When I select "All threads" I cannot see this thread, but when I select "Open questions", it is visible.
    It says that there are 6 answers. When I click on the thread, it comes up with only 3 answers visible.
    This behavior, with posts appearing and disappearing, has been occurring for a few weeks, and is just one of many symptoms of the poor forum service provided to Adobe by Jive.  You can keep abreast of such forum issues at the Forum Comments forum:
    http://forums.adobe.com/community/general/forum_comments

  • Why is there a scroll bar though I set the background image to "scale to page size"?"

    Why is there a scroll bar though I set the background image to "scale to page size"?"

    The current build of iTunes may occasionally draw the scroll bar off the edge of the screen. It should be possible to resize the window to reveal the scroll bar.
    You can restore much of the look & feel of the previous version with these shortcuts:
    Ctrl-B to turn on the menu bar.
    Ctrl-S to turn on the sidebar.
    Ctrl-/ to turn on the status bar.
    Click the magnifying glass top right and untick Search Entire Library to restore the previous search behaviour.
    You can also open the menu bar temporarily by pressing Alt.
    tt2

  • I want to reset my ipad 2 but in the settings menu/general there is no reset button. this is the only way to restore factory settings from what i can see on internet. can anyone help?

    i want to reset my ipad 2 but in the settings menu/general there is no reset button. this is the only way to restore factory settings from what i can see on internet. can anyone help?

    You can restore the device within iTunes on your computer. This article will describe the process for you.
    http://support.apple.com/kb/ht1414
    On the iPad - Settings>General>Reset>Erase all content and settings

Maybe you are looking for

  • Using an LCD TV as monitor?

    I have a mac-mini 2.3 w/ 4GB RAM. It has Thunderbolt and HDMI inputs (plus USB 2.0 and Firewire 800) It's running Lion, most recent version. I want to use a flatscreen tv as the sole monitor. I'm going to buy a tv just for this purpose. I want to be

  • How to SEND HTML formatted mail??

    How do I put HTML formatted text into an email I want to SEND? -- "Paste as HTML" in edit menu is dimmed, and I can't get it to un-dim... I want to paste formatted text from an HTML editor into an email... can I do this with Mail, or do I need some o

  • OPEN_DATASET_NO_AUTHORITY abap runtime errors

    Hi, I have a custom ABAP program which outputs a file to UNIX and then FTP this file to a NT share drive. I have no problem executing this program using my ID. I checked using AL11 that the creator of the file in UNIX is DEVADM & not my user id. Howe

  • " Enter valid code [IGE1.tem code][line1036] application-defined or object defined error65171 "

    Hello All, I tried to Import Goods Issue in SAP B1, but I got Error as  below " Enter valid code [IGE1.tem code][line1036] application-defined or object defined error65171 " Anyone please suggest me what would be the cause of this error. Regards, Hit

  • ORA-12535 error but TNSPing Works and listener logs connection

    We recently migrated our firewall and then started seeing this problem for users outside of our own subnet. However, although the user gets this error when launching the application, the workstation is able to TNSPing the server successfully and list