
JVM
jx_ming
这个作者很懒,什么都没留下…
展开
-
Java 内存结构
Java堆(Java Heap) java 堆是 java 虚拟机所管理的内存中最大的一块,是被所有线程共享的一块内存区域,再虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,这一点在 Java 虚拟机规范中的描述是:所有的对象实例以及数组都有在堆上分配。 ...原创 2019-07-22 13:44:52 · 129 阅读 · 0 评论 -
垃圾回收机制
什么是垃圾回收机制? 不定时去堆内存中清理不可达对象。不可达的对象并不会马上就会直接回收,垃圾收集器在一个 java 程序中的执行是自动的,不能强制执行,即使程序员能明确地判断出有一块内存已经无用了,是应该回收的,程序员也不能强制垃圾回收器回收该内存块。程序员唯一能做的就是通过调用 System.gc 方法来“建议”执行垃圾收集器,但其是否可以执行,什么时候执行却都是不可知的。这也是垃圾收集器的最...原创 2019-07-22 14:28:50 · 111 阅读 · 0 评论 -
垃圾收集器
并行回收与串行回收区别 串行回收:JDK1.5前的默认算法 缺点是只有一个线程,执行垃圾回收时程序停止的时间比较长 并行回收:多个线程执行垃圾回收适合于吞吐量的系统,回收时系统会停止运行 serial收集器 串行收集器是最古老,最稳定以及效率高的收集器,可能会产生较长的停顿,只使用一个线程去回收。新生代、老年代使用串行回收;新生代复制算法、老年代标记-压缩;垃圾收集的过程中会Stop The ...原创 2019-07-22 17:16:26 · 79 阅读 · 0 评论 -
JVM 参数配置
JVM提供了诸多的参数进行JVM各个方面内存大小的设置,为Java应用进行优化提供了诸多的工具。 常见参数配置 -XX:+PrintGc 每次触发GC的时候打印相关日志 -XX:+UseSerialGC 串行回收 -XX:+PrintGCDetails 更详细的GC日志 -Xms 堆初始值 -Xmx 堆最大可用值 -Xmn 新生代堆最大可用值 -XX:SurvivorRatio 用来设置新生代中...原创 2019-07-22 17:30:09 · 131 阅读 · 0 评论 -
JVM 解决堆内存溢出问题
OutOfMemoryError异常 错误原因 java.lang.OutOfMemoryError: Java heap space 堆内存溢出 解决办法 设置堆内存大小 // -Xms1m -Xmx10m -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError 垃圾回收机制基本原则 内存不足的时候会去回收,内存如果足够,暂时不会去回收 Stack...原创 2019-07-23 11:13:40 · 418 阅读 · 0 评论 -
JDK 可视化工具
JConsole 从Java 5开始 引入了 JConsole。JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行。您可以轻松地使用 JConsole(或者,它更高端的 “近亲” VisualVM )来监控 Java 应用程序性能和跟踪 Java 中的代码。 如果是从命令行启动,使 JDK 在 PATH 上,运行 jconsole 即可。 如果从 GU...原创 2019-07-23 11:24:18 · 237 阅读 · 0 评论 -
字节码技术
字节码技术应用场景 AOP 技术、Lombok 去除重复代码插件、动态修改 class 文件等。 字节码技术优势 Java 字节码增强指的是在 Java 字节码生成之后,对其进行修改,增强其功能,这种方式相当于对应用程序的二进制文件进行修改。Java 字节码增强主要是为了减少冗余代码,提高性能等。 实现字节码增强的主要步骤为: 修改字节码 在内存中获取到原来的字节码,然后通过一些工具(如 ASM...原创 2019-07-23 13:40:56 · 263 阅读 · 0 评论 -
类加载器
类加载的机制的层次结构 每个编写的”.java”拓展名类文件都存储着需要执行的程序逻辑,这些”.java”文件经过Java编译器编译成拓展名为”.class”的文件,”.class”文件中保存着Java代码经转换后的虚拟机指令,当需要使用某个类时,虚拟机将会加载它的”.class”文件,并创建对应的class对象,将class文件加载到虚拟机的内存,这个过程称为类加载。 类加载的过程,如下: 步骤...原创 2019-07-23 14:32:56 · 85 阅读 · 0 评论