JVM系列之三:类型的生命周期

此篇文章主要介绍从一个Java类型(类或者接口)的生命周期(从它进入虚拟机到退出)开始阶段的装载、连接与初始化,以及占Java类型声明周期绝大部分时间的对象实例化、垃圾收集和对象终结,然后是Java类型生命周期的结束,也就是从虚拟机中卸载。 类型装载、连接与初始化 Java虚拟机通过装载、连接和初始 ... »

JVM读书笔记之垃圾收集与内存分配

1 概述 说起垃圾收集( Garbage Collection , GC ) ,大部分人都把这项技术当做 Java 语言的伴生产物。事实上, GC 的历史远远比 Java 久远,1960 年诞生于 MIT 的 Lisp 是第一门真正使用内存动态分配和垃圾收集技术的语言。当 Lisp 还在胚胎时期时, ... »

JVM调优总结

写在之前的话 最近在工作中总是遇到服务的QPS在压测的时间比较低的情况。于是就开始了性能优化之旅,这个过程是很是曲折。一开始的时候认为是服务的业务逻辑比较多,大部分的时间都花在优化业务逻辑,减少与其他服务和数据库等接口的调用,使用缓存等方式提高性能。上述的工作都是对性能有提升的,但是对于一个熟练的农 ... »

Hotspot优化指南(上)

一次偶然,博主在浏览docs.oracle.com/javase的时候发现了《Hotspot虚拟机垃圾收集调优指南》这篇文档。内心百感交集,之前在看完了周志明的《深入理解Java虚拟机 JVM高级特性与最佳实践(第二版)》也有比较长篇的学习记录博客发表。不过那也是基于JDK7进行编写的。后续的8、9 ... »

JVM学习笔记——垃圾收集器

title: JVM学习笔记——垃圾收集器 date: 2018/9/4 17:09:31 description: 最近开始着手JVM的学习,在这里把自己学习过程中的笔记分享出来,希望能帮到一些小伙伴,同时也是对自己的学习的一个梳理。 垃圾收集器 垃圾收集器内容颇多,但算法原理都是基于垃圾收集算法 ... »

系统优化怎么做-JVM优化之VisualVM

大家好,这里是「聊聊系统优化 」,并在下列地址同步更新 博客园:http://www.cnblogs.com/changsong/ 知乎专栏:https://zhuanlan.zhihu.com/youhua 思否专栏:https://segmentfault.com/blog/youhua 全网私 ... »

JVM系列之一:Java虚拟机

什么是Java虚拟机? Java虚拟机,从字面上来看,像是某种机器,但Java虚拟机之所以被称之为“虚拟”的,是因为它是由一个规范来定义的抽象计算机,所以在我们说Java虚拟机的时候,可能指的是如下三种不同的东西: 抽象规范 一个具体的实现 一个运行中的虚拟机实例 Java虚拟机的生命周期 当启动一 ... »

JVM之GC算法

GC算法:引用计数法(Reference Counting)、标记清除法(Mark-Sweep)、复制算法(Copying)、标记压缩法(Mark-Compact)、分代算法(Generational Collecting)及分区算法(Region) ... »

JVM学习笔记——GC日志

title: JVM学习笔记——GC日志 date: 2018/9/3 10:28:30 description: 最近开始着手JVM的学习,在这里把自己学习过程中的笔记分享出来,希望能帮到一些小伙伴,同时也是对自己的学习的一个梳理。 GC日志 GC日志相关参数 XX:+PrintGC 输出GC日志 ... »

JVM学习笔记——GC概述

title: JVM学习笔记——GC概述 date: 2018/9/2 12:05:00 description: 最近开始着手JVM的学习,在这里把自己学习过程中的笔记分享出来,希望能帮到一些小伙伴,同时也是对自己的学习的一个梳理。 GC概述 其实GC主要就是思考以下三件事情: 哪些内存需要回收? ... »

JVM学习笔记——对象的创建过程

title: JVM学习笔记——对象的创建过程 date: 2018/9/1 16:01:35 description: 最近开始着手JVM的学习,在这里把自己学习过程中的笔记分享出来,希望能帮到一些小伙伴,同时也是对自己的学习的一个梳理。 对象的创建过程 1. 检查该类是否已经被加载、解析、初始化 ... »

JVM的内存管理机制

一、JVM的内存区域 对于C、C++程序员来说,在内存管理领域,他们既拥有每一个对象的“所有权”,又担负着每一个对象生命开始到终结的维护责任。 对Java程序员来说,在虚拟机的自动内存管理机制的帮助下,不再需要为每个new操作去写匹对的 delete/free 代码,不容易出现内存泄露和内存溢出的问 ... »

Java的内存区域

title: JVM学习笔记——Java的内存区域 tags: Java JVM 笔记 categories: 学习笔记 description: 最近开始着手JVM的学习,在这里把自己学习过程中的笔记分享出来,希望能帮到一些小伙伴,同时也是对自己的学习的一个梳理。 date: 2018 08 30 ... »

系统优化怎么做-JVM优化之开篇

前言 在上一期Tomcat优化中,针对JVM相关主要参数做过一定说明,这一期主要介绍进行一些概念及经验。后面分章节去讲述相关工具的基本使用。 优化优先级 整体来讲,系统优化应先优化架构及代码,来解决具体功能点效率问题。最后通过JVM监控工具来发现一些隐藏较为深入的问题。 相关情形 内存占用并不断增加 ... »

聊一聊让我蒙蔽一晚上的各种常量池

在写之前我们先来看几个问题,假如你对这些问题已经很懂了的话,那大可不用看这篇文章,如果不大懂的话,那么可以看看我的想法。问题1: public static void main(String[] args){ String t1 = new String("1"); t1.intern(); Str ... »

Tomcat类加载架构

前言 主流的Java Web服务器(Tomcat、Jetty、WebLogic、WebSphere等)都有多个自定义的类加载器以及具备的类加载优势,本篇博文主要是通过以Tomcat为例简单认识Java Web服务器具有的特点、以及自定义类加载器是如何实现的。此外,本篇博文主要是根据Tomcat 5. ... »

JVM(1)---虚拟机在运行期的优化策略

1.解释器与JIT编译器 首先我们先来了解一下运行在虚拟机之上的解释器与JIT编译器。当我们的虚拟机在运行一个java程序的时候,它可以采用两种方式来运行这个java程序: 采用解释器的形式,也就是说,在运行.class运行的时候,解释器一边把.class文件翻译成本地机器码,一边执行。显然这种一边 ... »

scala中Either的一种使用场景

用scala有一年多了,对于scala中的Option和Try使用的较为频繁,对其应用场景相对熟悉一些。而对于Either,仔细回想一下却发现几乎(完全)没有使用过,其实并不是没有遇到过Either的使用场景,只是遇到的时候不知道能够使用Either来解决此问题。 昨天在网上偶然看到一篇介绍Eith ... »

如何优雅的使用和理解线程池

谈到线程池就会想到池化技术,其中最核心的思想就是把宝贵的资源放到一个池子中;每次使用都从里面获取,用完之后又放回池子供其他人使用,有点吃大锅饭的意思。 那在 Java 中又是如何实现的呢? ... »