• 内存分析和垃圾回收机制(Garbage Collection)


    (自动分配连续的空间,后进先出)

      --每个线程私有,不能实现线程间的共享!

      --存放:局部变量。

      --栈是由系统自动分配,速度快!栈是一个连续的内存空间!

      --存放:new 出来的对象。  

      --堆是一个不连续的内存空间,分配灵活,速度慢!

    方法区(也是堆)

      --被所有线程共享!

      --存放:程序中永远是不变或唯一的内容。(类代码信息、静态变量、字符串常量)

    JVM 加载程序

      --JVM 加载类,首先到堆空间(方法区)找有没类的信息(代码),如果有则不加载类,直接使用。没有,去 classpath(类路径)找相应类的字节码文件,找到进行加载(类加载器 ClassLoader),然后在方法区有类的信息(代码)。如果没找到,则报异常 ClassNotFoundException。

    JVM内存划分:

      --寄存器:内存和cpu之间的事情

      --本地方法栈JVM调用了系统中的功能

      --方法和数据共享区:运行时期class文件,进去的内存

      --方法栈:所有的方法运行的时候,进去的内存

      --堆:存储的容器和对象


    JAVA的内存管理实际上指的就是对象的管理,其中包括对象空间的分配和释放。

     GC要点

      --程序员无权调用垃圾回收器

      --程序员可以通过 System.gc()。通知 GC 运行,但是 Java 规范并不能保证立刻运行。

      --finalize 方法,是 Java 提供给程序员用来释放对象或资源的方法,但是尽量少用。

    对象空间的分配

      --使用 new 关键字创建对象即可。

    对象空间的释放

      --将对象赋值null,即该对象没有引用指向时。垃圾回收器将负责回收所有”不可达”对象的内存空间。

  • 相关阅读:
    使用logstash迁移elasticsearch
    cratedb 4.2.1单机安装
    es6.8.5集群部署(使用x-pack ssl方式)
    es从6.5升级到6.8(单节点)
    elasticsearch-6.8.5单机部署(当生产环境使用)
    mysql_upgrade升级(主从模式,先升级从库)
    mysql_upgrade升级(直接本地升级)
    主从数据不一致导出同步错误(从库记录存在导致写入报主键重复)
    12C下使用logminer
    mysql主库磁盘空间爆满导致从库错误
  • 原文地址:https://www.cnblogs.com/fanyizhan/p/9899683.html
Copyright © 2020-2023  润新知