Vector vec=new Vector();
while(true){
  vec.add(new String("hello"));
}

解决方案 »

  1.   

    http://community.csdn.net/Expert/topic/3720/3720282.xml?temp=.5415003
      

  2.   

    jvm中内存泄漏,这个词很少出现。按c/c++/vc的内存泄漏说法是指:开辟的变量(内存)在使用完之后,没有释放这个变量(内存),
    导致系统资源耗尽。jvm中垃圾回收机制,开辟的变量(内存)在使用完之后没有释放,jvm会自动回收。一般在jvm中常见的类似状态是
    数据库连接不关之类的操作。。
      

  3.   

    好像连接池之类,流等的用完了 记得close 
    集合类的clear等
      

  4.   

    import java.util.*;
    class TestMem 
    {
    public static void main(String[] args) 
    {
    System.out.println("Hello World!");
    Vector vec=new Vector();
    int i = 0;
    while(true){
      vec.add(new String("hello"));
      i ++;
      if (i % 10000 == 0)
      {
    System.out.println(i);
      }
    } }
    }---------- java ----------
    Hello World!
    10000
    20000
    30000
    40000
    50000
    60000
    70000
    80000
    90000
    100000
    110000
    120000
    130000
    140000
    150000
    160000
    170000
    180000
    190000
    200000
    210000
    220000
    230000
    240000
    250000
    260000
    270000
    280000
    290000
    300000
    310000
    320000
    330000
    340000
    350000
    360000
    370000
    380000
    390000
    400000
    410000
    420000
    430000
    440000
    450000
    460000
    470000
    480000
    490000
    500000
    510000
    520000
    530000
    540000
    550000
    560000
    570000
    580000
    590000
    600000
    610000
    620000
    630000
    640000
    650000
    660000
    670000
    680000
    690000
    700000
    710000
    720000
    730000
    740000
    750000
    760000
    770000
    780000
    790000
    800000
    810000
    820000
    830000
    840000
    850000
    860000
    870000
    880000
    890000
    900000
    910000
    920000
    930000
    940000
    950000
    960000
    970000
    980000
    990000
    1000000
    1010000
    1020000
    1030000
    1040000
    1050000
    1060000
    1070000
    1080000
    1090000
    1100000
    1110000
    1120000
    1130000
    1140000
    1150000
    1160000
    1170000
    1180000
    1190000
    1200000
    1210000
    1220000
    1230000
    1240000
    1250000
    1260000
    1270000
    1280000
    1290000
    1300000
    1310000
    1320000
    1330000
    1340000
    1350000
    1360000
    1370000
    1380000
    1390000
    1400000
    1410000
    1420000
    1430000
    1440000
    1450000
    1460000
    1470000
    1480000
    1490000
    1500000
    1510000
    1520000
    1530000
    1540000
    1550000
    1560000
    1570000
    1580000
    1590000
    1600000
    1610000
    1620000
    1630000
    1640000
    1650000
    1660000
    1670000
    1680000
    1690000
    1700000
    1710000
    1720000
    1730000
    1740000
    1750000
    1760000
    1770000
    1780000
    1790000
    1800000
    1810000
    1820000
    1830000
    1840000
    1850000
    1860000
    1870000
    1880000
    1890000
    1900000
    1910000
    1920000
    1930000
    1940000
    1950000
    1960000
    1970000
    1980000
    1990000
    2000000
    2010000
    2020000
    2030000
    2040000
    2050000
    2060000
    2070000
    2080000
    2090000
    2100000
    2110000
    2120000
    2130000
    2140000
    2150000
    2160000
    2170000
    2180000
    2190000
    2200000
    2210000
    2220000
    2230000
    2240000
    2250000
    2260000
    2270000
    2280000
    2290000
    2300000
    2310000
    2320000
    2330000
    java.lang.OutOfMemoryError
    Exception in thread "main" Normal Termination
    Output completed (4 sec consumed).
      

  5.   

    楼上的现象应该不是内存泄漏,而是创建的数据量过多导致内存不够用。这种现象只要是电脑的都存在,谁用过vc/vb/dephi/c++/asp/php/java/
    打开一个1G的文件保存到内存中?
      

  6.   

    class Test{
    public Test test = null;
    public void main(String args[]){
    Test t1 = new Test();
    Test t2 = new Test();
    t1.test=t2;
    t2.test=t1;
    t1=null;
    t2=null;
    }
    }
      

  7.   

    class Test{
    public Test test = null;
    public static void main(String args[]){
    Test t1 = new Test();
    Test t2 = new Test();
    t1.test=t2;
    t2.test=t1;
    t1=null;
    t2=null;
    }
    }
    丢了个static^-^
    不知道这个属不属于内存泄漏~~
      

  8.   

    内存渗漏体是编程中无法避免的问题,属于java的垃圾回收机制,由java虚拟机控制.
    也可调用gc()方法和finalize()方法联合控制.
      

  9.   

    lxleaves(飘泊的叶子) 说:
    class Test{
    public Test test = null;
    public static void main(String args[]){
    Test t1 = new Test();
    Test t2 = new Test();
    t1.test=t2;
    t2.test=t1;
    t1=null;
    t2=null;
    }
    }
    丢了个static^-^
    不知道这个属不属于内存泄漏~~这个不会内存泄漏,现代垃圾回收算法可以回收。
      

  10.   

    #include <iostream>
    using namespace std;int main(){
      int *Test = new int(100);
    } //out of Memory
      

  11.   

    只要在堆中创建的分配的内存空间没有准时回收,就会产生楼主所讲的情况,不过我指的是C++中的例子,当然在JAVA中没有指针语法,只有虚引用,加上JVM自动垃圾回收,应该一般轻易不会出现这种情况。
      

  12.   

    简单的例子
    用一个循环申请Object对象,并将所申请的对象放入一个Vector中,如果仅仅
    释放引用本身,那么Vector仍然引用该对象,所以这个对象对GC来说是不可回
    收的。因此,如果对象加入到Vector后,还必须从Vector中删除,调用Vector
    的remove方法,当然如果这个Vector不再使用了,直接将Vector对象设置为
    null,所以对象都会被释放了。
    Vector v=new Vector(10);
    for (int i=1;i<100; i++)
    {
    Object o=new Object();
    v.add(o);
    o=null;
    }
    //此时,所有的Object对象都没有被释放,因为变量v引用这些对象.对话框在需要释放时没有采用dispose()方法向swing注销,造成资
    源的不可回收
    /**
         * 退出预览窗口
         * @param evt
         */   
    private void exitPrevActionPerformed(java.awt.event.ActionEvent evt){
            this.hide();
    }所有已经注册的keystrok在释放时没有注销,造成资源的不可回收
    okButton.registerKeyboardAction( okButtonListener,
              KeyStroke.getKeyStroke( KeyEvent.VK_ENTER, 0, true ),
                               JComponent.WHEN_IN_FOCUSED_WINDOW );    仅在初始化时注册了okbutton的KeyboardAction。没有释放。总之,在java中的内存泄露是因为编程上的疏忽,而导致某些对象在长时间没
    有被使用的情况下,却还被其它变量或对象引用,而不能被虚拟机回收.
    要避免此,一是,当有addXXX方法时,就要有removeXXX方法对应,当有registxxx
    时,就要有unregistxxx,反正是在做JDBC,事件注册,JMS消息注册时(涉及到资源
    调用时),一定要记得释放资源.
    二是,良好的编程风格,和类设计.类之间的耦合程度要尽量低,结构清晰.三,推荐工具.
    Borland公司的OptimizeIt,当然还有其他一些常见的工具如JinSight和Purify.
      

  13.   

    是不是这个原因所以现在都不提倡用Vector啊?
      

  14.   

    Vector如果没有地方在引用是不是会被释放
      

  15.   

    Vector如果没有地方在引用是不是会被释放
    会的,java中严格来说没什么内存泄漏,
    像lxleaves(飘泊的叶子) 的例子,这个也对象确实一直在内存里,但是也可能通过
    Test.test来取到的,所以不要考虑这个,
    除非你一次new很多很多的对象放到一个List等里(这个List生存时间很长)时,
    而且用过list(i)之后你没有把list(i)=null
    list(i)你以后也不用了,那么就会出outofmemmory
      

  16.   

    java中是存在内存泄漏的问题,因为这是一些比较复杂的编程中因为一些有引用指向的对象,但是又从来没有使用过的对象造成的!
      我只是在书上看过,但是没有看到实例!
      java中同样并不是绝对的安全的,在一些特殊的情况下,同样存在内存泄漏这个问题!要研究这个问题,那你就得详细的看看,java的回收机制吧!