随笔分类 -  JVM

摘要:JVM的无关性 与平台无关性是建立在操作系统上,虚拟机厂商提供了许多可以运行在各种不同平台的虚拟机,它们都可以载入和执行字节码,从而实现程序的“一次编写,到处运行” https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downl 阅读全文
posted @ 2020-07-30 14:18 SoyWang 阅读(752) 评论(0) 推荐(0)
摘要:垃圾回收器整理 收集器 收集对象和算法 收集器类型 说明 适用场景 Serial 新生代,复制算法 单线程 简单高效;适合内存不大的情况; ParNew 新生代,复制算法 并行的多线程收集器 ParNew 垃 圾 收 集 器 是Serial 收集器的多线程版本 搭配CMS垃圾回收器的首选 Paral 阅读全文
posted @ 2020-07-27 19:33 SoyWang 阅读(313) 评论(0) 推荐(0)
摘要:什么是 GC Java与 C++等语言最大的技术区别:自动化的垃圾回收机制(GC) 为什么要了解 GC 和内存分配策略 1、GC 对应用的性能是有影响的; 2、写代码有好处 栈:栈中的生命周期是跟随线程,所以一般不需要关注 堆:堆中的对象是垃圾回收的重点 方法区/元空间:这一块也会发生垃圾回收,不过 阅读全文
posted @ 2020-07-27 08:37 SoyWang 阅读(670) 评论(0) 推荐(0)
摘要:JVM中对象的创建过程 对象的内存分配 虚拟机遇到一条 new 指令时,首先检查是否被类加载器加载,如果没有,那必须先执行相应的类加载过程。 类加载就是把 class 加载到 JVM 的运行时数据区的过程。 1)检查加载 首先检查这个指令的参数是否能在常量池中定位到一个类的符号引用(符号引用 :符号 阅读全文
posted @ 2020-07-23 13:45 SoyWang 阅读(808) 评论(0) 推荐(0)
摘要:深入理解运行时数据区 代码示例: 1. JVM 向操作系统申请内存: JVM 第一步就是通过配置参数或者默认配置参数向操作系统申请内存空间,根据内存大小找到具体的内存分配表,然后把内存段的起始地址和终止地址分配给 JVM,接下来 JVM 就进行内部分配。 2. JVM 获得内存空间后,会根据配置参数 阅读全文
posted @ 2020-07-22 00:02 SoyWang 阅读(373) 评论(0) 推荐(0)
摘要:JVM 基础知识 JVM 从编译到执行 Java程序的执行过程 一个 Java 程序,首先经过 javac 编译成 .class 文件,然后 JVM 将其加载到方法区,执行引擎将会执行这些字节码。执行时,会翻译成操作系统相关的函数。JVM 作为 .class 文件的翻译存在,输入字节码,调用操作系统 阅读全文
posted @ 2020-07-20 02:04 SoyWang 阅读(178) 评论(0) 推荐(0)
摘要:大纲介绍 第一,垃圾回收简介第二,G1介绍第三,G1 Young GC第四,G1 Mix GC第五,调优实践第六,G1相关处理参数第七,总结 本文首先简单介绍了垃圾收集的常见方式,然后再分析了G1收集器的收集原理,相比其他垃圾收集器的优势,最后给出了一些调优实践和相关参数列表。 一,垃圾回收简介 首 阅读全文
posted @ 2020-03-16 11:58 SoyWang 阅读(722) 评论(0) 推荐(0)
摘要:面向对象 01、构造器参数太多怎么办? 如果参数很多,会导致构造方法非常多,拓展性差,代码难编写,且难以看懂。 用JavaBeans模式, get和set 一行构造编程多行代码实现,需要使用额外机制确保一致性和线程安全。 用builder模式, 1、5个或者5个以上的成员变量 2、参数不多,但是在未 阅读全文
posted @ 2019-06-14 01:49 SoyWang 阅读(995) 评论(0) 推荐(0)
摘要:JVM调优的本质: 并不是显著的提高系统性能,不是说你调了,性能就能提升几倍或者上十倍,JVM调优,主要调的是稳定。如果你的系统出现了频繁的垃圾回收,这个时候系统是不稳定的,所以需要我们来进行JVM调优,调整垃圾回收的频次。 GC调优原则 调优的原则 1、 大多数的java应用不需要GC调优 2、  阅读全文
posted @ 2019-06-14 01:48 SoyWang 阅读(2012) 评论(0) 推荐(0)
摘要:Class文件结构 计算机只认识0和1,这个称之为本地机器NativeCode Jvm的无关性 与平台无关性是建立在操作系统上,虚拟机厂商提供了许多可以运行在各种不同平台的虚拟机,它们都可以载入和执行字节码,从而实现程序的“一次编写,到处运行” https://www.oracle.com/tech 阅读全文
posted @ 2019-06-14 01:46 SoyWang 阅读(325) 评论(0) 推荐(0)
摘要:内存溢出 内存溢出的原因:程序在申请内存时,没有足够的内存空间 栈溢出 方法死循环递归调用(StackOverflowError)、不断建立线程(OutOfMemoryError) 堆溢出 不断创建对象,分配对象大于最大堆的大小(OutOfMemoryError) 直接内存 分配的本地内存大小大于J 阅读全文
posted @ 2019-06-14 01:46 SoyWang 阅读(614) 评论(0) 推荐(1)
摘要:Java与C++等语言最大的技术区别:自动化的垃圾回收机制(GC) 为什么要了解GC和内存分配策略 1、面试需要 2、GC对应用的性能是有影响的; 3、写代码有好处 栈:栈中的生命周期是跟随线程,所以一般不需要关注 堆:堆中的对象是垃圾回收的重点 方法区/元空间:这一块也会发生垃圾回收,不过这块的效 阅读全文
posted @ 2019-06-14 01:45 SoyWang 阅读(669) 评论(0) 推荐(0)
摘要:未来的Java技术 模块化:OSGI(动态化、模块化),应用层面就是微服务,互联网的发展方向 混合语言:多个语言都可以运行在JVM中,google的Kotlin 成为了 Android 的官方语言。Scala(Kafka) 多核并行:CPU从高频次转变为多核心,多核时代。JDK1.7引入了Fork/ 阅读全文
posted @ 2019-06-14 01:44 SoyWang 阅读(297) 评论(0) 推荐(0)
摘要:虚拟机中的对象 对象的分配 虚拟机遇到一条new指令时:根据new的参数是否能在常量池中定位到一个类的符号引用,如果没有,说明还未定义该类,抛出ClassNotFoundException; 1)检查加载 先执行相应的类加载过程。如果没有,则进行类加载 2)分配内存 根据方法区的信息确定为该类分配的 阅读全文
posted @ 2019-06-14 01:44 SoyWang 阅读(693) 评论(0) 推荐(0)