how tha garbage collector know that the object will be
deleted? on which algorithm the garbage collector works?
what is the working principle of garbage collector? How
manay types of garbage collectors r there?
An object is eligible for garbage collection when it
determines no more references to the object exists.
Algorithms that are used for garbage collection.
1 – Reference Counting:
Each object has an associated reference count. This count
indicates the number of active references to that object.
If this count is zero, it is garbage and can be recycled.
Whenever the reference is modified, the count is updated.
Once this count is zero, the memory is reclaimed.
2 – Tracing Collectors:
Mostly the standard garbage collectors do not use Reference
Counting. They will use some form of tracing collector’s
algorithms. This algorithm will trace all objects starting
from root until all reachable objects have been examined.
3 – Mark-Sweep collectors:
This is most basic form of collector algorithm. In this
case the collector visits each node starting from root and
marks each node. Once there are no any references, the
collection is complete. The heap is swept and the objects
not marked are reclaimed and returned to free list.
4 – Copying Collectors:
In this case, the heap is divided into equally sized semi
spaces. One with active data and another with unused. Once
the active space fills up, the objects are copied from
active to unused space and the roles are flipped becoming
unused space as active. This has advantages as it examines
only active data. But will have a overhead of copying data
from active to unused space.
5 – Heap Compaction:
In the copying collectors, the set of live objects can be
compacted at the bottom of heap. This improves locality of
reference and eliminates heap fragmentation and greatly
reduces the cost of object allocation which eliminates the
need to maintain free lists or look-aside lists or perform
best-fit or first-fit algorithms and allocating N bytes is
simple to add N to heal pointer.
| Is This Answer Correct ? | 5 Yes | 0 No |
What is the difference between interface & abstract class?
Write a java program to generate fibonacci series ?
What is jit compiler in java?
How do you use nextline in java?
What is difference between overloading and overriding?
What is difference between static variable and global variable?
Question 7 [8] Consider the following class and answer the questions below it: public class StackWithGuard extends Stack { public StackWithGuard(int size) { super(size); } synchronized public boolean isEmpty() { return super.isEmpty(); } synchronized public boolean isFull() { return super.isFull(); } synchronized public int getSize() { return super.getSize(); } synchronized public void push(Object obj) { try { while (isFull()) { wait(); } } catch (InterruptedException e) {} super.push(obj); COS2144/102 11 notify(); } synchronized public Object pop() { try { while (isEmpty()) { wait(); } } catch (InterruptedException e) {} Object result = super.pop(); notify(); return result; } public static void main(String args[]) { StackWithGuard stack = new StackWithGuard(5); new Producer(stack, 15).start(); new Consumer(stack, 15).start(); } } Note: The Stack class is provided in the Appendix. Note also: The following questions all refer to the pop() method of the StackWithGuard class given above. 7.1 What does the synchronized keyword ensure for this method? (2) 7.2 Why is a while loop used to test whether the stack is empty? In other words, why wouldn't the following if statement be sufficient? if (isEmpty()) { wait(); } (2) 7.3 Why is the result of popping (provided by the inherited pop() method) stored in a temporary variable? In other words, why wouldn't the following statement be sufficient? return super.pop(); (2) 7.4 Why is the while loop placed in a try-catch structure? (2) Appendix The LinkedQueue class: public class LinkedQueue implements Queue { private Node first, last; private int count; public LinkedQueue() { first = last = null; count =0; } public int size() { return count; } public boolean isEmpty() { return (count == 0); 12 } public void enqueue(Object o) { Node node = new Node(); node.element = o; node.next = null; node.prev = last; if (last != null){ last.next = node; } else { last = first = node; } last = node; count++; } public void dequeue() { if ((first!= null) & (first.next!=null)) { first = first.next; first.prev = null; count--; } else { first = last = null; count--; } } public Object front() { return first; } } class Node { Object element; Node next, prev; } The Stack class: public class Stack { protected Object rep[]; protected int top = -1; protected int size = 0; protected int count = 0; public Stack(int size) { if (size > 0) { this.size = size; rep = new Object[size]; } } public boolean isFull() { return (count == size); } public boolean isEmpty() { return (count == 0); } public int getSize() { return size; } public void push(Object e) { if (e != null && !isFull()) { COS2144/102 13 top++; rep[top] = e; count ++; } } public Object pop() { Object result = null; if (!isEmpty()) { result = rep[top]; top--; count--; } return result; } }
How can you eliminate duplicates?
what are ER diagrams?
Is multiple inheritance allowed in Java? Why ?
What are the problems faced by java programmers who don't use layout managers?
Can you have two constructors in java?