1. 如何得到Java应用程序的可用内存?
2. 请说出下面例中的代码为什么可以运行?
class MainMethodNot
{
static
{
System.out.println("This java program have run without the run method");
System.exit(0);
}
}
3.class文件中的字符串采用何种编码,采用这种编码的好处是什么?
4.说说JVM原理?内存泄露与溢出区别,何时产生内存泄露?

解决方案 »

  1.   

    1. 如何得到Java应用程序的可用内存? 
    new A();
    2. 请说出下面例中的代码为什么可以运行?
    静态代码块,JVM加载类时要先执行
    3.class文件中的字符串采用何种编码,采用这种编码的好处是什么? 
    UNICODE
    4.说说JVM原理?内存泄露与溢出区别,何时产生内存泄露? 
    泄露:内存被无用对象占用且不会被释放
    溢出:JVM所能提供的内存不够用了
      

  2.   

    不是这样的,这样才可以:Runtime.getRuntime().freeMemory()
      

  3.   

    我补充一下,
    第四题jvm的原理:
    是将.class 文件装入内存,并把这些.class 文件包含的伪指令解释为具体平台的机器指令,然后执行。内存溢出:在一个域中输入的数据超过了它的要求
      

  4.   

    这个是错的,因为虚拟机不是每次都把所有可用内存都拿过来的,而是在可用内存不够用的时候才去拿一点点,所以你会发现Runtime.getRuntime().freeMemory()这个值永远很小
    理论上的求值方法是:Runtime.getRuntime().maxMemory()-Runtime.getRuntime().totalMemory()+Runtime.getRuntime().maxMemory()  这才是真正的虚拟机中的可用物理内存
      

  5.   

    上个帖子有问题,纠正下:这个是错的,因为应用程序不是每次都把虚拟机中所有可用内存都拿过来的,而是在可用内存不够用的时候才去拿一点点,所以你会发现Runtime.getRuntime().freeMemory()这个值永远很小 
    理论上的求值方法是:Runtime.getRuntime().maxMemory()-Runtime.getRuntime().totalMemory()+Runtime.getRuntime().freeMemory()  这才是真正的虚拟机中的可用物理内存
      

  6.   

    第二题不对吧,我用netbean咋运行不了,在说不是static也是能运行的吧?望高手在答
      

  7.   

    我的解答1.如何得到Java应用程序的可用内存?
    Runtime.getRuntime().freeMemory()
    2. 请说出下面例中的代码为什么可以运行? 
    静态代码块,JVM加载类时要先执行 
    3.class文件中的字符串采用何种编码,采用这种编码的好处是什么? 
    UNICODE 
    4.说说JVM原理?内存泄露与溢出区别,何时产生内存泄露? 
    泄露:内存被无用对象占用且不会被释放 
    溢出:JVM所能提供的内存不够用了
      

  8.   

    第二题肯定可以运行,在“java核心编程”第7版中有明确说明。
    第四题的内存泄露
    请见
    http://www.ibm.com/developerworks/cn/java/l-JavaMemoryLeak/
      

  9.   

    刚接触jave,知道是跟web关系挺大的语言
      

  10.   

    java.lang.management.MemoryMXBean mmmx  = ManagementFactory.getMemoryMXBean();
    java.lang.management.MemoryUsage mu = mmmx.getHeapMemoryUsage();
    System.out.println(mu.getMax()/1024/1024);//最大内存 用double更好 单位M
    System.out.println(mu.getUsed()/1024/1024);//已用内存
    System.out.println("----"+(mu.getMax()/1024/1024-mu.getUsed()/1024/1024));//剩余内存
      

  11.   


    这是对的! 2. 请说出下面例中的代码为什么可以运行?
    class MainMethodNot
    {
    static
    {
    System.out.println("This java program have run without the run method");
    System.exit(0);
    }
    }由于static块在main方法执行之前执行,如果没有System.exit(0);那么上面的代码可以运行,但是会抛出异常!
      

  12.   

    补充一点!  如果程序不是在命令行是不能进行运行的! 用IDE是运行不了的!  因为没有main方法
      

  13.   

    upRuntime.getRuntime().freeMemory() 
      

  14.   


    这个小知识点很有用,在core java的静态变量中讲过
      

  15.   

    static 代码在运行时就加载了,所以能够执行!
    内存泄露指对象占有的资源没有释放,而溢出指内存空间不够用,出现其他数据被覆盖的现象!
      

  16.   

    Unicode的优点是:
        举一个最明显的例子就是Windows 2000/XP以及微软Office2000及其后的产品。因为这些软件都是Unicode内核,因此,无论何种文字,都可以在上面正常显示,而且是同屏显示。以前,简体中文的Word文件拿到英文版打开就会是乱码,简体中文的程序在Windows英文版上运行会出现乱码,而现在一切都解决了。