活跃数据应用程序长期稳定运行时存活对象再堆中占用内存大小。
取得日志可能不准确,需要多次取得取得平均值
分配比例如下:
     总空间:3-4n
     新生代:1-1.5n
     老年代:2-3n

     永久代:1.2-1.5n

运行时最大内存:
     RunTime.getRuntime().maxMemory/(double)1024/1024
运行时内存:
     RunTime.getRuntime().totalMemory/(double)1024/1024

1、通过 java -Xmm2G -Xms2G 调整运行时内存
   通过命令可打印内存情况
   jVisualVm可视化查看JVM进程相关信息
2、在eclipse根目录下的eclipse.ini配置文件中添加以下参数:

     -verbose:gc (开启打印垃圾回收日志)

     -Xloggc:eclipse_gc.log (设置垃圾回收日志打印的文件,文件名称可以自定义)

      XX:+PrintGCTimeStamps (打印垃圾回收时间信息时的时间格式)

     -XX:+PrintGCDetails (打印垃圾回收详情)

     添加完以上参数后当启动Eclipse后就能在Eclipse根目录看到一个eclipse_gc.log的gc日志文件

3、设置eclipse初始堆、非堆内存大小以及年轻代

           -Xms50m –Xmx200m -XX:PermSize=30m -XX:MaxPermSize=60m

4、添加JVM监控参数

           -Djava.rmi.server.hostname=127.0.0.1

           -Dcom.sun.management.jmxremote.port=6688

           -Dcom.sun.management.jmxremote.ssl=false 

           -Dcom.sun.management.jmxremote.authenticate=false

 

GC:判断算法
1、引用计数法(查看对象引用次数):
 计数为0没有被引用可以被回收,如图B不能被回收
           

JVM -GC&内存

 


2 、可达性分析(根对象是否有引用):
  关联的引用也可以,如图B不能被回收,不可达的并不是一定会回收

JVM -GC&内存

 


可以作为GCRoot的对象,不能被GC
1 虚拟机栈中局部变量表应用对象中不能被删除
2 方法区中:常量静态变量引用的对象不能被删除
3 本地方法栈中JNI引用对象

相关文章:

  • 2021-11-10
  • 2021-11-26
  • 2021-11-18
  • 2021-07-01
  • 2021-05-13
  • 2021-11-25
猜你喜欢
  • 2021-08-05
  • 2021-06-14
  • 2021-08-17
  • 2021-11-23
  • 2021-04-21
  • 2022-01-03
  • 2021-10-28
相关资源
相似解决方案