张晓华的博客

        2005年,最后一场雪,还是下了,虽然凄凉了一些!
posts - 171, comments - 89, trackbacks - 5, articles - 1

Java 扫盲

Posted on Monday, July 03, 2006 9:52 AM
Java 堆栈和线程寄存器中的值

Java 堆栈中的值是相对的,因为堆栈上的帧包含 Java 方法的局部变量。线程寄存器中的值也是相对的,因为这里存储当前正在执行的方法的局部变量和操作数。

将对象分配到碎片化的堆中

Java 对象要求创建一个单一的连续的内存区。如果 Java 堆有残留的碎片,那么可能没有足够的连续内存可以分配给给定对象,即使总内存是足够的。即使在内存看起来足够的情况下,这也会导致 OutOfMemoryError

垃圾回收

糟糕的对象管理常会造成堆用尽和过度的垃圾回收。以下是一些可以确保您不会落入这种圈套的技巧:
<1>    请记住,只要是“可以访问的”(不严格的讲)对象都会被保留在堆中 ― 如果一个使用中的对象引用了一个不再使用的对象,这个不再使用的对象就无法被当作垃圾回收,而且会浪费空间。 Vector 、 HashTable 、链表以及类似的数据结构常常被误用,结果其占用引用的时间超出了释放引用的恰当时间。在辨别这类问题方面配置分析工具很有用。
<2>     垃圾回收是要付出代价的;其它的处理过程将会被暂停。可能的情况下,尽量优先重用对象,避免废弃对象后再重新创建它们。对象池机制在这方面很有用。

 

Post Comment

Title  
Name  
Url
Comment   
Protected by Clearscreen.SharpHIPEnter the code you see: