2013-09-24 62 views
-1

什么爪哇 - Runtime.xmemory()

Runtime.getRuntime().maxMemory(); 

.freeMemory(); 

回报? 我在我的4 GB RAM笔记本电脑上得到了一些价值观。是mbytes字节还是kbytes?

我需要做的有一个滑块分裂成512MBs,但有数字每个1024MBs

那是我的循环

 ram = new JSlider(); 
    ram.setMinimum(512); 
    ram.setPaintTicks(true); 
    ram.setMajorTickSpacing(512); 
    ram.setValue(512); 
    ram.setPreferredSize(new Dimension(750, 50)); 
    ram.setVisible(true); 
    Hashtable<Integer, JLabel> labelTable = new Hashtable<Integer, JLabel>(); 
    int mbs = 1024; 
    while(mbs <= Runtime.getRuntime().freeMemory()/1024){  
     labelTable.put(mbs, new JLabel(Integer.toString(mbs))); 
     mbs += 1024; 
    } 
    ram.setLabelTable(labelTable); 
    ram.setPaintLabels(true); 

     frame.add(ram) 

回答

1

Java Docs

freeMemory

众长freeMemory ()

返回Java虚拟机中的可用内存量为 。调用gc方法可能会导致 增加freeMemory返回的值。

返回:近似值 到当前可用于未来分配的 对象的当前可用内存总量,在字节中测量。

maxMemory

众长maxMemory()

返回Java虚拟机将尝试使用的内存 的最高金额。如果没有 固有限制,则返回值Long.MAX_VALUE。

返回:存储器,所述虚拟机将 试图使用的最大量,在字节

测量(对不起,此不打算以适应在注释)

+0

嗯,是的事实是,我有一个循环做每半记忆的东西。我不能让它与空闲内存一起工作 – Zarkopafilis

+0

你能用循环中的代码更新问题吗? – MadProgrammer

+0

再去看看 – Zarkopafilis

0

的javadoc指出这些值将以字节为单位。

近似于当前可用于未来分配对象的内存总量,以字节为单位。