JVM
码路编
这个作者很懒,什么都没留下…
展开
-
JVM-垃圾回收算法
对象回收堆分配情况虚拟机把堆内存划分为三个区域:新生代(Young Generation),老年代(Old Generation),持久代(Permanent Generation)回收判断引用计数法给对象添加一个引用计数器,没当有一个地方引用它时,计数器值就加一,当引用失效时,计数器值就减一;任何时刻计数器为0的对象就不可能再被引用了。缺点: 1. 当对...原创 2018-03-31 16:03:12 · 246 阅读 · 0 评论 -
JVM-常用Java虚拟机GC参数
1. 常用Java虚拟机GC基础参数-XX:+PrintGC 使用该参数启动JVM后,只要遇到GC,就会打印日志。-XX:+PrintGCDetails 更加详细的GC信息、-XX:+PrintHeapAtGC 在GC日志输出前后,输出详细的堆信息。-XX:+PrintGCTimeStamps 在每次GC发生时,额外输出GC发生的时间,该时间为虚拟机启动后的时间偏移量。-XX:+Pr...原创 2018-04-05 23:51:16 · 523 阅读 · 0 评论 -
JVM-四种引用
四种引用当内存空间还足够的时,则能保留在内存之中,如果内存空间在进行垃圾收集后还是非常紧张,则可以抛弃这些对象。故从JDK1.2对引用概念进行了扩充:1. 强引用程序代码中普遍存在的,类似Object obj=new Object()这类引用 1. 强引用可以直接访问对象 2. 强引用可能导致内存泄露 3. 强引用所指向的对象在任何时候都不会被回收的...原创 2018-04-12 20:53:50 · 259 阅读 · 0 评论 -
JVM-JVM的基本结构
运行时数据区域绿色区域都是线程共享的区域,白色区域则是线程运行时独有的内存区域。程序计数器可以看作当前线程所执行的行号指示器,每个线程有独立的PC寄存器,字节码解释器通过改变这个计数器的值来选取下一条需要执行的字节码指令。 1. 如果该方法不是Native的,那么PC寄存器就保存JVM正在执行的字节码指令地址 2. 如果该方法是Native的,那么PC寄存器的值就为空(un...原创 2018-03-29 18:25:45 · 193 阅读 · 0 评论 -
JVM-常见虚拟机配置
最大堆和初始堆的设置package com.liuyao;/** * Created By liuyao on 2018/4/6 10:39. */public class HeapAlloc { public static void main(String[] args) { System.out.print("MaxMemory="); S...原创 2018-04-06 18:24:45 · 536 阅读 · 0 评论 -
JVM-JDK自带命令行工具
JDK自带命令行工具1. jps-查看Java进程 jps命令相当于Linux下的ps命令,只不过它只列出Java进程。jps :列出Java程序进程ID和Main函数名称jps -q :只输出进程IDjps -m :输出传递给Java进程(主函数)的参数jps -l :输出主函数的完整路径jps -v :显示传递给Java虚拟的参数2. jstat-...原创 2018-04-30 10:11:01 · 3562 阅读 · 0 评论 -
JVM-对象内存分配与回收细节问题
对象内存分配与回收细节问题1. 禁用System.gc()System.gc():会显示直接触发Full GC,同时触发老年代和新生代进行回收。而一般情况是我们认为,垃圾回收时自动进行的,无需手动触发。频繁的垃圾回收对系统性能造成较大影响。可以使用-XX:+DisableExplicitGC,则禁用显示GC,使得System.gc()等价于一个空函数。2. System.gc()使用并发回收默认情况原创 2018-04-30 11:32:51 · 341 阅读 · 1 评论