随笔分类 -  JVM

摘要:调用: 阅读全文
posted @ 2019-10-04 22:53 toov5 阅读(385) 评论(0) 推荐(0) 编辑
摘要:JVM平台上还可以运行其他语言,运行的是Class字节码。只要能翻译成Class的语言就OK了。挺强大的。 JVM厂商很多 垃圾收集器、收集算法 JVM检测工具 关于类的加载: Java代码中,类型(interface, class,enum等,有些是在运行时候生成的,比如动态代理)的加载、连接与初 阅读全文
posted @ 2019-10-02 03:06 toov5 阅读(1224) 评论(0) 推荐(1) 编辑
摘要:基本数据类型是放在栈中还是放在堆中,这取决于基本类型声明的位置。 一:在方法中声明的变量,即该变量是局部变量,每当程序调用方法时,系统都会为该方法建立一个方法栈,其所在方法中声明的变量就放在方法栈中,当方法结束系统会释放方法栈,其对应在该方法中声明的变量随着栈的销毁而结束,这就局部变量只能在方法中有 阅读全文
posted @ 2019-04-01 16:40 toov5 阅读(123) 评论(0) 推荐(0) 编辑
摘要:热部署 对于Java应用程序来说,热部署就是在运行时更新Java类文件。 热部署的原理是什么 想要知道热部署的原理,必须要了解java类的加载过程。一个java类文件到虚拟机里的对象,要经过如下过程。 首先通过java编译器,将java文件编译成class字节码,类加载器读取class字节码,再将类 阅读全文
posted @ 2018-10-30 19:28 toov5 阅读(909) 评论(0) 推荐(0) 编辑
摘要:类加载器 类加载的机制的层次结构 每个编写的”.java”拓展名类文件都存储着需要执行的程序逻辑,这些”.java”文件经过Java编译器编译成拓展名为”.class”的文件,”.class”文件中保存着Java代码经转换后的虚拟机指令,当需要使用某个类时,虚拟机将会加载它的”.class”文件,并 阅读全文
posted @ 2018-10-30 15:47 toov5 阅读(166) 评论(0) 推荐(0) 编辑
摘要:AOP技术 Lombok去除重复代码插件 动态修改class文件等 Java字节码增强指的是在Java字节码生成之后,对其进行修改,增强其功能,这种方式相当于对应用程序的二进制文件进行修改。Java字节码增强主要是为了减少冗余代码,提高性能等。 方法一: 自定义ClassLoader来加载修改后的字 阅读全文
posted @ 2018-10-30 13:36 toov5 阅读(972) 评论(0) 推荐(0) 编辑
摘要:Jconsole,Java写的程序检测。 GUI,直接点击 MAC: /Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home/bin/jconsole 当分析工具弹出时(取决于正在运行的 Java 版本以及正在运行的 Java 阅读全文
posted @ 2018-10-30 11:51 toov5 阅读(914) 评论(0) 推荐(0) 编辑
摘要:前言: 串行回收,Serial回收器,单线程回收,全程stw; 缺点是只有一个线程,执行垃圾回收时程序停止的时间比较长 并行回收,名称以Parallel开头的回收器,多线程回收,全程stw; 指多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态。 多个线程执行垃圾回收适合于吞吐量的系统,回收时 阅读全文
posted @ 2018-10-30 00:51 toov5 阅读(950) 评论(0) 推荐(0) 编辑
摘要:递归调用,栈深度。 错误原因: java.lang.StackOverflowError 栈内存溢出 栈溢出 产生于递归调用,循环遍历是不会的,但是循环方法里面产生递归调用, 也会发生栈溢出。 解决办法:设置线程最大调用深度 -Xss5m 设置最大调用深度 小伙伴,玩个好玩的,最大默认深度: 结果: 阅读全文
posted @ 2018-10-30 00:18 toov5 阅读(975) 评论(0) 推荐(0) 编辑
摘要:Java堆溢出 错误原因: java.lang.OutOfMemoryError: Java heap space 堆内存溢出 解决办法:设置堆内存大小 // -Xms1m -Xmx10m -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError 下面这 阅读全文
posted @ 2018-10-30 00:09 toov5 阅读(179) 评论(0) 推荐(0) 编辑
摘要:JVM参数配置 JVM提供了诸多的参数进行JVM各个方面内存大小的设置,为Java应用进行优化提供了诸多的工具,本文将会详细分析各个参数的功能与使用。 常见参数配置 -XX:+PrintGC 每次触发GC的时候打印相关日志 -XX:+UseSerialGC 串行回收 -XX:+PrintGCDeta 阅读全文
posted @ 2018-10-29 23:45 toov5 阅读(398) 评论(0) 推荐(0) 编辑
摘要:1.标记清除算法 概念 该算法有两个阶段。 1. 标记阶段:找到所有可访问的对象,做个标记 2. 清除阶段:遍历堆,把未被标记的对象回收 应用场景 该算法一般应用于老年代,因为老年代的对象生命周期比较长。 优缺点 标记清除算法的优点和缺点 1. 优点 - 是可以解决循环引用的问题 - 必要时才回收( 阅读全文
posted @ 2018-10-29 21:58 toov5 阅读(292) 评论(0) 推荐(0) 编辑
摘要:如何判断对象是否存活 引用计数法 概念 引用计数法就是如果一个对象没有被任何引用指向,则可视之为垃圾。这种方法的缺点就是不能检测到环的存在。 首先需要声明,至少主流的Java虚拟机里面都没有选用引用计数算法来管理内存。 什么是引用计数算法: 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器 阅读全文
posted @ 2018-10-29 19:31 toov5 阅读(3664) 评论(0) 推荐(1) 编辑
摘要:JVM内存结构图: 1.Java堆 Java堆是java虚拟机所管理的内存中最大的一块,是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,这一点在Java虚拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配。[垃圾收集算法] 堆是垃圾收集器管理的主要区域 阅读全文
posted @ 2018-10-29 18:51 toov5 阅读(179) 评论(0) 推荐(0) 编辑