[阶段一]Java基础语法-数据类型(3)

课堂内容

今天的课程特别有意思,除了讲解基础知识外,学员们还各自到讲台上演示和讲解上节课的作业,达到了很不错的交流效果。每个人对待作业都特别认真,作业答案形式各样。看到明中写了1600+多行代码来实现这个功能,看得出很用心;广标典型的数学思维,几个数学公式搞定;宏心『美轮美奂』的代码也是让同学们赏心悦目。总之,继续加油吧!坚持1个月把基础打扎实!

  1. 小类型转大类型——隐式转换,JVM完成,自动转换规则
  2. 大类型转小类型——强制转换,存在边界值风险,精度丢失问题
  3. int与char转换——自动转换,ASCII码表一一对应
  4. 控制台获取字符串参数——String[ ] args
  5. Run Configuration——配置应用程序初始化Arguments
  6. Scanner类——类声明,next方法的使用
  7. java程序的错误类型——编译期、运行期、逻辑错误类型
  8. debug调试——断点、视图、查看变量、查看线程

自我提升

晚上做了一个这样的实验,计算1亿次循环,对比前后的时间,代码结构如下:

        long startTime=System.currentTimeMillis();
        long endTime;
        System.out.println("开始执行时间:"+startTime);
        List list=new ArrayList<>();
        for (int i = 0; i < 100000000; i++) {
            list.add(i);
        }
        endTime=System.currentTimeMillis();
        System.out.println("执行时长:"+(endTime-startTime));

1亿这个量级不算大,但为什么要执行这么久,并且最后还抛了个异常出来:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Unknown Source)
    at java.util.Arrays.copyOf(Unknown Source)
    at java.util.ArrayList.grow(Unknown Source)
    at java.util.ArrayList.ensureExplicitCapacity(Unknown Source)
    at java.util.ArrayList.ensureCapacityInternal(Unknown Source)
    at java.util.ArrayList.add(Unknown Source)
    at com.mashen.MemoryOutTest.main(MemoryOutTest.java:15)

出现这个异常的原因是 jvm的内存不足。初始内存空间值是物理空间的1/64,可以说相当小,用于运行普通的程序没问题,对于1亿次循环来说是相当吃力的。 可以通过下面的代码看看jvm的内存情况:

        //jvm占用的所有内存
        long total=Runtime.getRuntime().totalMemory();
    System.out.println("Total:"+total/(1024*1024)+"mb");
        //jvm能够从操作系统获取的最大内存
        long max=Runtime.getRuntime().maxMemory();
        System.out.println("Max:"+max/(1024*1024)+"mb");
        //jvm中空闲的内存
        long free=Runtime.getRuntime().freeMemory();
        System.out.println("Free:"+free/(1024*1024)+"mb");

可以通过修改jvm占用内存的大小来完成
eclipse> Run > Run Configurations > Arguments > VM Arguments 来修改当前应用程序的内存大小。 例如修改成:-Xms1024M -Xmx2048M 其中 -Xms 表示java heap的初始化大小,默认是物理内存的1/64,-Xmx 表示java heap的最大值,建议设成物理内存的一半,不可操作物理内存。通过设置这个值,1亿次的运算就不会出现这样的异常了!

课件

03.Java基础语法-数据类型1.pptx

你可能感兴趣的:(java,jvm)