zoukankan      html  css  js  c++  java
  • java核心-JVM-gc面试题

    1.写一个memory leak的例子

    public class MemonyLeak {
    
        //1.memoryLeak内存泄漏
        /*
            这类错误报错具体显示:java.lang.OutOfMemoryError: java heap space
            导致原因,是gc无法回收不再使用的对象,这些无用的对象导致堆内存不足。
            通常有成员变量或全局变量导致,解决办法就是定义好变量的作用范围
         */
    
        Map<String, List<String>> a;
    
        public void printSomething(){
    
            ArrayList<String> content = new ArrayList<>();
            for(int i=0;i<10000000;i++){
                content.add(i+i+i+i+System.currentTimeMillis()+"");
            }
            a = new HashMap<>();
            a.put("aa", content);
            System.out.println(a.hashCode());
        }
    
    
        public static void  main(String[] args){
            MemonyLeak memonyLeak1 = new MemonyLeak();
            memonyLeak1.printSomething();
            MemonyLeak memonyLeak2 = new MemonyLeak();
            memonyLeak2.printSomething();
            MemonyLeak memonyLeak3 = new MemonyLeak();
            memonyLeak3.printSomething();
            MemonyLeak memonyLeak4 = new MemonyLeak();
            memonyLeak4.printSomething();
            MemonyLeak memonyLeak5 = new MemonyLeak();
            memonyLeak5.printSomething();
            MemonyLeak memonyLeak6 = new MemonyLeak();
            memonyLeak6.printSomething();
        }
    }
    

    执行了好半天,结果报错了

    解决办法:

    将成员变量写到方法printSomething()里面
    
        public void printSomething(){
            Map<String, List<String>> a;
            ArrayList<String> content = new ArrayList<>();
            for(int i=0;i<10000000;i++){
                content.add(i+i+i+i+System.currentTimeMillis()+"");
            }
            a = new HashMap<>();
            a.put("aa", content);
            System.out.println(a.hashCode());
        }
    

    执行结果

    可见对于内存泄漏的问题可能来源了对象的作用域定义不合理,成员变量或全局变量的对象作用域比较宽,gc来不及回收容易造成内存泄漏

  • 相关阅读:
    个人期末总结
    团队冲刺第二阶段10
    团队冲刺第二阶段9
    团队冲刺第二阶段8
    团队冲刺第二阶段7
    团队冲刺第二阶段6
    数据分析之例题
    数据分析之数据操作
    数据分析之Matplotlib可视化
    数据分析之Pandas
  • 原文地址:https://www.cnblogs.com/leeethan/p/10961324.html
Copyright © 2011-2022 走看看