189 8069 5689

内存的代码java 内存的代码区有多大

如何用Java编写一段代码引发内存泄露

1、首先得搞清楚什么叫内存泄露,简单来说就是一个东西放在内存里的时间太长了,当你的程序都跑完了,它还存在那里。这时它是白白的占用了你的内存,累积起来占用的内存越来越多……最后就会导致JVM报错:out of memory。

成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的延吉网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

2、一般情况下,别人如果能指出你的系统(程序)内存溢出,这个人应该还是挺厉害的。通常对于新人来说,喜欢把变量直接定义在class下(此时称之为实例变量,或者成员变量),那么在方法里调用后,这个实例变量是不会被释放的,大量的这样使用就可能会引发内存泄露。

3、把变量定义在方法里,当这个方法执行完毕后内存就得到释放了,这是个好习惯。

4、如果想要看到内存溢出,可以按这样的思路去尝试一下:定义一个静态的实例变量(list或其它集合),然后在一个方法里循环往这个静态变量塞东西,直到这个实例变量撑爆你的jvm内存。很快你就能看到out of memory……

import java.util.ArrayList;

import java.util.List;

public class MemoryTest {

private static List list = new ArrayList();

private static int count = 0;

public static void main(String[] args) throws InterruptedException {

System.out.println("申请前的可用内存 = "+getFreeMemory());

while(true){

list.add(new byte[1024*1024]);//用实例变量申请1M内存,当方法执行完毕时,这个static的变量是不会被释放

count++;

if (count % 100 == 0) {

System.out.println("当前list.size()="+list.size()+",可用内存 = "+getFreeMemory());

Thread.sleep(500);

}

}

}

public static long getFreeMemory() {

return Runtime.getRuntime().freeMemory() / (1024 * 1024);

}

}

Java获得内存使用,磁盘情况

import java io File;

/**

*

* jdk 下的磁盘使用情况例子

*/

public class Diskfree {

public static void main(String[] args) {

File[] roots = File listRoots();//获取磁盘分区列表

for (File file : roots) {

System out println(file getPath()+ 信息如下: );

System out println( 空闲未使用 = + file getFreeSpace()/ / / + G );//空闲空间

System out println( 已经使用 = + file getUsableSpace()/ / / + G );//可用空间

System out println( 总容量 = + file getTotalSpace()/ / / + G );//总空间

System out println();

}

}

}

java获得当前系统内存情况的代码如下

Java code

import java lang management ManagementFactory;

import sun management OperatingSystemMXBean;

public class OSTest {

public static void main(String[] args)

{

OperatingSystemMXBean o *** b = (OperatingSystemMXBean) ManagementFactory getOperatingSystemMXBean();

System out println( 系统物理内存总计 + o *** b getTotalPhysicalMemorySize() / / + MB );

System out println( 系统物理可用内存总计 + o *** b getFreePhysicalMemorySize() / / + MB );    }

}

ManagementFactory getOperatingSystemMXBean()返回的是java lang management里面的OperatingSystemMXBean

我们要用的是 sun management OperatingSystemMXBean;

在java类库中可以查到

public abstract Interface sun management OperatingSystemMXBean extends java lang management OperatingSystemMXBean

所以我们可以强制转换一下

想得到磁盘使用情况的话 可以看 楼的例子 要得到系统信息的话 使用System getProperty(String key);

方法

内存使用可以使用Runtime getRuntime() getTotalMemory() Runtime getRuntime() getFreeMemory()

纯JAVA是不能同操作系统打交到得 比如你要看CPU使用率 一般就是使用JNI技术(一些简单得系统熟悉 可以通过System getProperties()获得)

lishixinzhi/Article/program/Java/hx/201311/27126

怎么用java代码实现栈内存?

使用java.util包中的Stack类创建一个栈对象

public Object push(Object data);输入数据,实现压栈

public Object pop();输出数据,实现弹栈

public boolean empty()判空

public Object peek();查看栈顶元素

可以去查查API嘛

我也是学java的,大家一起进步。


名称栏目:内存的代码java 内存的代码区有多大
文章来源:http://cdxtjz.cn/article/ddchsje.html

其他资讯