Question about the GC in Java

Given
Given:
3. class Beta { }
4. class Alpha {
5. static Beta b1;
6. Beta b2;
7. }
8. public class Tester {
9. public static void main(String[] args) {
10. Beta b1 = new Beta(); Beta b2 = new Beta();
11. Alpha a1 = new Alpha(); Alpha a2 = new Alpha();
12. a1.b1 = b1;
13. a1.b2 = b1;
14. a2.b2 = b2;
15. a1 = null; b1 = null; b2 = null;
16. // do stuff
17. }
18. }Why there is only 1 object will be eligible for GC. I need a clear explanation pls

newbie wrote:
jverd wrote:
newbie wrote:
Pinto wrote:
Since this looks like a homework assignment, how about you post what you think the answer is. Rather than just spoonfeeding you the answer which you will just hand in as your own work.It is not a homework assignment. It is practice test from SCJP. Nevertheless, since you're trying to learn, you'll learn better if you think it through as much as possible yourself, post what you think and why and solicit feedback on that, rather than just asking for the answer.
How many objects do you think are eligible, and why?Thanks for your cheer.First of all I rename the instance variable of object Alpha. now i have
Given:
3. class Beta { }
4. class Alpha {
5. static Beta x;
6. Beta y;
7. }
8. public class Tester {
9. public static void main(String[] args) {
10. Beta b1 = new Beta(); Beta b2 = new Beta();
11. Alpha a1 = new Alpha(); Alpha a2 = new Alpha();
12. a1.x = b1;
13. a1.y = b1;
14. a2.y= b2;
15. a1 = null; b1 = null; b2 = null;
16. // do stuff
17. }
18. I have a stack containing a1, a2, b1, b2 and heap is containing 2 objects of type Alpha, 2 objects of type Beta, x, y *(AM I RITE AT HERE)*Yes. Note that x and y are part of the two Alpha objects.
At line 12 and 13, the instance variable y and class variable x of class Alpha point to an object of class Beta b1.Close. The instance variable y of one of the Alpha objects (not of the Alpha class) and the class variable x of class Alpha point to a Beta object--the same Beta that's pointed to by b1.
At line 14,*instance variable y* points to an object of class Beta b2.Instance variable y of the other Alpha object points to the second Beta object--the same one that's pointed to by b2.
Note that there are two y variables (one for each Alpha object) and one x variable (one for the Alpha class overall). That's the difference between an instance (non-static member) variable and a class (static member) variable.
Finally, at line 15, a1, b1, b2 are set to null. Yup.
Therefore, i think there are 2 objects which are eligible for GC ( 1 object of type Alpha and 1 object of type Beta)Well, let's see.
a1 is null, so nothing is pointing to the first Alpha, so it's GC-able. Additionally, that first Alpha's y is no longer pointing to the first Beta, so you might think that makes that Beta unreachable. However, the class variable x (which is not specific to any Alpha instance) is still pointing to the first Beta. So far, one GC-able object.
b1 is null, so it no longer points to the first Beta, but Alpha.x still points to the first Beta. Still one GC-able object.
b2 is null, so it no longer points to the second Beta, but the second Alpha's y still does, so the second Beta is still reachable. Still one GC-able object.
Remember, there are two y variables--one for each Alpha instance--and one x variable--one for the Alpha class as a whole.
Part of what makes this example confusing is they followed a syntactically legal but bad practice approach of using a reference variable to refer to a static class member, rather than the class name.
a1.x // legal, but confusing
Alpha.x // preferred
a1.y // the only legal way
Alpha.y // error, won't compile -- how would the compiler know WHICH Alpha instance's y variable we mean?

Similar Messages

  • Question about the performence of Java Card

    Could anyone here tell me how slow running algorithms, like rc4�Ades3 or rsa, on an 8k EEPROM JavaCard?
    thanx in advance
    rong

    Hi:
    The performance of javacard is no direct relation with chips. At present most chips is still 8 bit processor. 16 bit processor has more higher price. The reason of running algorithm slow is same as the java applet running on PC platform. Any java and javacard applet must be interpreted by java VM or javacard VM. This way is different from common application windows-based running. This kind application is machine code which can be understanded by hardware directly. But bytecode of java applet is not. It must be translated into machine code by VM. So running speed must slow down. As I konw, some mainstream chip maker is developing javachip. It can run java applet several times faster than software implementation.
    Chen Song
    Beijing

  • A question about the execution order of java code

    I have a question about the order of the execution of java code.
    class myclass
    String str1 = new String("str1");
    static String str2 = new String("str2");
    static
    String str3 = new String("str3");
    myclass( )
    String str4 = new String("str4");
    static myfuntion()
    String str5 = new String("str5");
    When I new a myclass object, what is the order of execution about str1,str2.str3 ,str4?
    When I run myclass::myfunction( ) instead of new a myclass object what is the execution order about str1, str2, str3, str4, str5?
    Thanks

    hello,
    I think there may be one thing can't use println to make sure.
    class myclass
    static {  System.out.println("str1");   };
    myclass() { System.out.println("str2"); }
    then str1 appear before str2
    class myclass
    static {  String str1 = new String("str1"); };
    myclass() { String str2 = new String("str2"); }
    then
    str1 initilized before str2,
    str1 get the value str1----->after<----- str2.
    Am I right or wrong?

  • I want to question about the official service at the service center of Sony.

    I want to question about the official service at the service center of Sony.
    long since I like the models and items sony. from start playstation, cameras, camcorders up, I've ever had. and a new camera that I bought two years ie compact cameras Sony Cybershot DSC H200. as of a month ago, a camera was having problems in lenses that would not close. and setting the automatic mode to move by itself. I came to the Sony Service Center in Makassar, precisely on Jl. Shop Pengayomann A5 / 05 (0411) 442340.
    operator initially said only two weeks to work on my camera. but this week has been more dau even want to go in a month tomorrow, dated July 9, no news from the service center. and I kept the call to the office service. as well as assorted reasons. there are no spare parts or technical constraints, and the last one I call to his office, he said the factory spare part is damaged. imported directly from Singapore. I think, ko new spare part it can be damaged before using that? how the quality of this Sony spare part? ugly? not good? why?
    I was disappointed with this situation, where soon it will Eid, want to return home as well to Java. but the camera has not been settled workmanship?
    nah, roughly what is the solution of the Sony plagued with this problem? please help, because he did not know to whom to complain. operator had just said: it's up to the father alone.
    once again I asked for his help. solution. if you can before Eid arrived.
    Thank you,
    AD. Rusmianto

    Hi awwee107, 
    Welcome to the Sony Community! 
    We have forwarded your query to the relevant team for their further assistance and someone from local CC will contact you.
    Thanks!
     

  • A question about the getProperty method defined in the Security class

    Hello Everyone!
    I would like to ask a question about the getProperty method defined in the
    Security class.
    public static String getProperty(String key) Do you know how can I exract the list of all possible keys?.
    Thanks in advance,

    I found the answer, in fact the keys are defined in the java.security file.

  • Re: Question about the Satellite P300-18Z

    Hello everyone,
    I have a couple of questions about the Satellite P300-18Z.
    What "video out" does this laptop have? (DVI, s-video or d-sub)
    Can I link the laptop up to a LCD-TV and watch movies on a resolution of 1080p? (full-HD)
    What is the warranty on this laptop?

    Hello
    According the notebook specification Satellite P300-18Z has follow interfaces:
    DVI - No DVI port available
    HDMI - HDMI-out (HDMI out port available)
    Headphone Jack - External Headphone Jack (Stereo) available
    .link - iLink (Firewire) port available
    Line in Jack - No Line in Jack port available
    Line out Jack - No Line Out Jack available
    Microphone Jack - External Micrphone Jack
    TV-out - port available (S-Video port)
    VGA - VGA (External monitor port RGB port)
    Also you can connect it to your LCD TV using HDMI cable.
    Warranty is country specific and clarifies this with your local dealer but I know that all Toshiba products have 1 year standard warranty and also 1 year international warranty. you can of course expand it.

  • A question about the impact of SQL*PLUS SERVEROUTPUT option on v$sql

    Hello everybody,
    SQL> SELECT * FROM v$version;
    BANNER
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    PL/SQL Release 11.2.0.1.0 - Production
    CORE    11.2.0.1.0  Production
    TNS for Linux: Version 11.2.0.1.0 - Production
    NLSRTL Version 11.2.0.1.0 - Production
    SQL>
    OS : Fedora Core 17 (X86_64) Kernel 3.6.6-1.fc17.x86_64I would like to ask a question about the SQL*Plus SET SERVEROUTPUT ON/OFF option and its impact on queries on views such as v$sql and v$session. Here is the problem
    Actually I define three variables in SQL*Plus in order to store sid, serial# and prev_sql_id columns from v$session in order to be able to use them later, several times in different other queries, while I'm still working in the current session.
    So, here is how I proceed
    SET SERVEROUTPUT ON;  -- I often activate this option as the first line of almost all of my SQL-PL/SQL script files
    SET SQLBLANKLINES ON;
    VARIABLE mysid NUMBER
    VARIABLE myserial# NUMBER;
    VARIABLE saved_sql_id VARCHAR2(13);
    -- So first I store sid and serial# for the current session
    BEGIN
        SELECT sid, serial# INTO :mysid, :myserial#
        FROM v$session
        WHERE audsid = SYS_CONTEXT('UserEnv', 'SessionId');
    END;
    PL/SQL procedure successfully completed.
    -- Just check to see the result
    SQL> SELECT :mysid, :myserial# FROM DUAL;
        :MYSID :MYSERIAL#
           129   1067
    SQL> Now, let's say that I want to run the following query as the last SQL statement run within my current session
    SELECT * FROM employees WHERE salary >= 2800 AND ROWNUM <= 10;According to Oracle® Database Reference 11g Release 2 (11.2) description for v$session
    http://docs.oracle.com/cd/E11882_01/server.112/e25513/dynviews_3016.htm#REFRN30223]
    the column prev_sql_id includes the sql_id of the last sql statement executed for the given sid and serial# which in the case of my example, it will be the above mentioned SELECT query on the employees table. As a result, right after the SELECT statement on the employees table I run the following
    BEGIN
        SELECT prev_sql_id INTO :saved_sql_id
        FROM v$session
        WHERE sid = :mysid AND serial# = :myserial#;
    END;
    PL/SQL procedure successfully completed.
    SQL> SELECT :saved_sql_id FROM DUAL;
    :SAVED_SQL_ID
    9babjv8yq8ru3
    SQL> Having the value of sql_id, I'm supposed to find all information about cursor(s) for my SELECT statement and also its sql_text value in v$sql. Yet here is what I get when I query v$sql upon the stored sql_id
    SELECT child_number, sql_id, sql_text
    FROM v$sql
    WHERE sql_id = :saved_sql_id;
    CHILD_NUMBER   SQL_ID          SQL_TEXT
    0              9babjv8yq8ru3    BEGIN DBMS_OUTPUT.GET_LINES(:LINES, :NUMLINES); END;Therefore instead of
    SELECT * FROM employees WHERE salary >= 2800 AND ROWNUM <= 10;for the value of sql_text I get the following value
    BEGIN DBMS_OUTPUT.GET_LINES(:LINES, :NUMLINES);Which is not of course what I was expecting to find in v$sql for the given sql_id.
    After a bit googling I found the following thread on the OTN forum where it had been suggested (well I think maybe not exactly for the same problem) to turn off SERVEROUTPUT.
    Problem with dbms_xplan.display_cursor
    This was precisely what I did
    SET SERVEROUTPUT OFFafter that I repeated the whole procedure and this time everything worked pretty well as expected. I checked SQL*Plus documentation for SERVEROUTPUT
    and also v$session page, yet I didn't find anything indicating that SERVEROUTPUT should be switched off whenever views such as v$sql, v$session
    are queired. I don't really understand the link in terms of impact that one can have on the other or better to say rather, why there is an impact
    Could anyone kindly make some clarification?
    thanks in advance,
    Regards,
    Dariyoosh

    >
    and also v$session page, yet I didn't find anything indicating that SERVEROUTPUT should be switched off whenever views such as v$sql, v$session
    are queired. I don't really understand the link in terms of impact that one can have on the other or better to say rather, why there is an impact
    Hi Dariyoosh,
    SET SERVEROUTPUT ON has the effect of executing dbms_output.get_lines after each and every statement. Not only related to system view.
    Here below what Tom Kyte is explaining in this page:
    Now, sqlplus sees this functionality and says "hey, would not it be nice for me to dump this buffer to screen for the user?". So, they added the SQLPlus command "set serveroutput on" which does two things
    1) it tells SQLPLUS you would like it <b>to execute dbms_output.get_lines after each and every statement</b>. You would like it to do this network rounding after each call. You would like this extra overhead to take place (think of an install script with hundreds/thousands of statements to be executed -- perhaps, just perhaps you don't want this extra call after every call)
    2) SQLPLUS automatically calls the dbms_output API "enable" to turn on the buffering that happens in the package.Regards.
    Al

  • Questions about the Apple Developer Enterprise Program

    Hi there,
    i got some questions about the Apple Developer Enterprise Program:
    - is there a way a company can create their own "AppStore" with only the APPs the employees should use?
    - when I developed the enterprise app are the install files on a apple hosted server or do i need my own infrastructure to distribute my app?
    Thanks in advance for answers!

    Google: MDM

  • Some questions about the integration between BIEE and EBS

    Hi, dear,
    I'm a new bie of BIEE. In these days, have a look about BIEE architecture and the BIEE components. In the next project, there are some work about BIEE development based on EBS application. I have some questions about the integration :
    1) generally, is the BIEE database and application server decentralized with EBS database and application? Both BIEE 10g and 11g version can be integrated with EBS R12?
    2) In BIEE administrator tool, the first step is to create physical tables. if the source appliation is EBS, is it still needed to create the physical tables?
    3) if the physical tables creation is needed, how to complete the data transfer from the EBS source tables to BIEE physical tables? which ETL tool is prefer for most developers? warehouse builder or Oracle Data Integration?
    4) During data transfer phase, if there are many many large volume data needs to transfer, how to keep the completeness? for example, it needs to transfer 1 million rows from source database to BIEE physical tables, when 50%is completed, the users try to open the BIEE report, can they see the new 50% data on the reports? is there some transaction control in ETL phase?
    could anyone give some guide for me? I'm very appreciated if you can also give any other information.
    Thanks in advance.

    1) generally, is the BIEE database and application server decentralized with EBS database and application? Both BIEE 10g and 11g version can be integrated with EBS R12?You, shud consider OBI Application here which uses OBIEE as a reporting tool with different pre-built modules. Both 10g & 11g comes with different versions of BI apps which supports sources like Siebel CRM, EBS, Peoplesoft, JD Edwards etc..
    2) In BIEE administrator tool, the first step is to create physical tables. if the source appliation is EBS, is it still needed to create the physical tables?Its independent of any soure. This is OBIEE modeling to create RPD with all the layers. If you build it from scratch then you will require to create all the layers else if BI Apps is used then you will get pre-built RPD along with other pre-built components.
    3) if the physical tables creation is needed, how to complete the data transfer from the EBS source tables to BIEE physical tables? which ETL tool is prefer for most developers? warehouse builder or Oracle Data Integration?BI apps comes with pre-built ETL mapping to use with the tools majorly with Informatica. Only BI Apps 7.9.5.2 comes with ODI but oracle has plans to have only ODI for any further releases.
    4) During data transfer phase, if there are many many large volume data needs to transfer, how to keep the completeness? for example, it needs to transfer 1 million rows from source database to BIEE physical tables, when 50%is completed, the users try to open the BIEE report, can they see the new 50% data on the reports? is there some transaction control in ETL phase?User will still see old data because its good to turn on Cache and purge it after every load.
    Refer..http://www.oracle.com/us/solutions/ent-performance-bi/bi-applications-066544.html
    and many more docs on google
    Hope this helps

  • Two questions about the new iWeb

    Hi
    I've got two questions about the new iWeb.
    1. Is it possible to blog online now? Meaning adding a new blog entry without having to be on your own Mac? This is a feature I've been waiting for since iWeb first was released.
    2. Is it possible to choose the format of images? Earlier editions had the option to "optimize" images but that meant it changed it into .png meaning the site got a lot heavier than if .jpg was used. And since I have relatives who still only have an isdn connection I need to be able to have the website as light as possible.
    thanks

    Ah well... thanks for the quick answer
    Message was edited by: Guðlogi

  • Question about the sensor... just got my 4s yesterday after screwing up my 3 with the laterd version update.  EVery call I have been on has either changed to speaker, called another number or ended the call or activated facetime, which I have turned off.

    Question about the sensor... just got my 4s yesterday after screwing up my 3 with the laterd version update. EVery call I have been on has either changed to speaker, called another number or ended the call or activated facetime, which I have turned off. never had this trouble with my 3...I don't even want to talk to anyone on this phone! Is the sensor bad? That is what the AT&t rep suggested.

    Restore as new... if the problem still continues then there is a hardware issue.
    If it stops after a restore as new, then the issue is with the backup the device is currently setup with.

  • Question about the DB adapter

    Question about the DB adapter
    ns2006.0.7
    Question:
    It seems that we can only have 1 db adapter, but in the adapter defiition we have to specify the database.  If I want to communicate to several different databases on different platforms, Oracle / SQL I need to install a DB adapter for each database connection. 
    I can't figure out how to add a second DB adapter, does anyone know how?
    Thank you
    Daniel
    Safeway Inc.

    Hi
    We're new at developing our own agents etc. We've leveraged the supplied DB agent and written the relevant adapter, however we're struggling with the transformation.
    Could I be cheeky and ask if anyone would be willing to share a transformation they have written for the DB adapter? Unfortunately no-one in our team has had past XML experience, so we're trying to backwards engineer from examples.
    Thanks, Meghan

  • Question about the ability of Genius Bar to help with outside software...

    Hi I wasn't sure where to put this, but here's my question. I'm having a problem with the Sims 2 on my Macbook and I was wondering if I go to the Genius Bar will they be able to help me or are they strictly hands off when it's not a direct Apple product?
    Also, I bought an external hard drive in the Apple Store but it's not an Apple branded product. If I'm having a problem with that, can I go to the Apple Store?

    If it's a question about the installation, system requirements or compatibility with your MacBook, the Mac Genius can probably help. If you're having some kind of issue while using the Sims 2, you'll probably have to contact .
    The same is true with the hard drive. If you need some help getting it connected or even formatted, they can probably help. However, if it's not powering up or you're losing files or some kind of operational issue with the hard drive after it's connected, they'll probably refer you to the manufacturer.
    Usually Apple can't support other vendors' products. Someone here may be able to give you some more advice, since none of us work for Apple. There may be someone here who's already had the same issue with the Sims.
    -Doug

  • Question about the programming of a legend

    Hello everybody,
    I have a question about the programming of a waveform's legend. I
    already asked here in this forum about the legend programming (03)
    months ago.
    I went satisfied but I ve just noticed that this code
    (See Code old_legend_test.llb with main.vi as main function) operates a
    little different from my expectances.
    Therefore I have a new question and I want to know if it
    is possible by labview programming to plot and show, on a waveform
    chart, a signal with activ plot superior to zero (0) without to be
    obliged to plot and show a signal with activ plot equal to zero (0) or
    inferior to the desired activ plot.
    I give you an example
    of what I m meaning. I have by example 4 signals (Signal 0, 1, 2 and 3)
    and each signal corresponds respectively to a channel (Chan1, Chan2,
    Chan3, Chan4). I want to control the legend (activ plot, plot name and
    plot color) programmatically. Is it possible with labview to plot signal
    1 or 2 or 3 or (1, 3) or (2,3) or (1,2,3) or other possible combination
    without to active the signal with the corresponding activ plot zero
    (0)?
    Let see the labview attached data
    (new_legend_test.llb with main.vi as main function). When I try to
    control the input selected values again I get them back but I don't
    understand why they have no effect on the legend of my waveform chart.
    Could somebody explain me what I m doing wrong or show me how to get a
    correct legend with desired plots? Thank by advance for your assistance.
    N.B.
    The
    both attached data are saved with labview 2009.
    Sincerly,PrinceJack
    Attachments:
    old_legend_test.llb ‏65 KB
    new_legend_test.llb ‏65 KB

    Hi
    princejack,
    Thanks for
    posting on National Instruments forum.
    The behavior
    you have is completely normal. You can control the number of row displayed in
    the legend and this rows are linked to the data you send to your graph. Thus,
    if you have 3 arrays of data, let say chan1, chan2 and chan3, you can choose
    which data you want to display in your graph using the property node (Active
    plot and visible). But for the legend as you send 3 plots there is an array of
    the plot name [chan1, chan2, chan3] and you can display 0, 1, 2 or 3 rows of
    this array but you cannot control the order in this array! So, to be able to
    change this array you have to only send data you need to you graph. I'm not
    sure my explanations are clear so I have implemented a simple example doing
    that.
    Benjamin R.
    R&D Software Development Manager
    http://www.fluigent.com/
    Attachments:
    GraphLegend.vi ‏85 KB

  • Question about the notification center (Mails and Reminders)

    Hello together,
    I just started using Mountain Lion and now I have some few questions about the notification center.
    1. Is it possible to show all reminds in the notification center? I have a lot of reminds without an date / time and they don't appear in the notification center.
    2. Is it possible to show the last five Mails in the notification center? I'm just seeing new incoming mails, but I would prefer it, if I could see the last five mails
         (no matter if readed or unreaded).
    Thank you very much for you help.
    Ratte1988       
    Hallo zusammen,
    ich habe gerade damit begonnen Mountain Lion zu verweden und habe einige Fragen zur Mitteilungszentrale.
    1. Ist es möglich alle Erinnerungen in der Zentrale anzuzeigen? Ich habe viele Erinnerungen, die ohne Datum / Uhrzeit sind und in der Mitteilungszentrale
         daher nicht auftauchen.
    2. Ist es möglich, sich die letzten fünf Mails in der Zentrale anzeigen zu lassen? Ich sehe nur neue ungelesene Mails, würde es aber vorziehen die letzten
         fünf Mails sehen zu können (egal ob gelesen oder ungelesen.)
    Danke für eure Hilfe.
    Ratte1988

    Only reminders with dates appear in the notification center - undated ones don't. Once an email has been read, it is removed from the notification center. Apple has a feedback center where you can offer suggestions.

Maybe you are looking for

  • Error in generating the JAVADOC

    Hi all, I made a file called mylist.txt containing lists of files that will be used in the documentation process C:\jdk1.4\bin\DMD\*.java then when i try to generate javadoc then i am getting the following error i have kept the mylist.txt in C:\jdk1.

  • Getting an "Internal Error" while trying to export..  Please Help??????

    I am using Windows 7 with photoshop cs5 on a PC.  When i try and export an image to my canon printer I get a popup telling me that an "internal error has occured". What is wierd is everything was fine before and have used it a bunch of times then all

  • Firefox already running, profile missing or inaccessible, cannot kill in task manager

    For reference, this is on windows 8 In the past I've (very rarely) had the "firefox is already running" error and was able to fix it by ending the process in task manager. I updated to firefox 36 the other day. Since then, firefox will run perfectly

  • Adding two arrays together

    I am trying to add two arrays together, it does not seem as if the arrays are broken up into more than one index. I have attached my code. If the array is broken up into indexes I would like to add each corresponding index, but I think the array is a

  • Adding a dropdown menu in Dreamweaver CS3

    I already have a navigation bar and some links on it and I want to add a pop-up menu to one of those links. Unfortunately Adobe has removed the MX pop-up menu functionality from Dreamweaver CS3 and the only way that I can see to make pop-up menus is