个人简介

Echo Blog


江湖无名 安心练剑
  • JVM-09-classloader
    ClassLoader 官方概念,看一下即可。 类定义 public abstract class ClassLoader extends Object 概念 类装入器是负责装入类的对象。类类装入器是一个抽象类。给定类的二进制名称,类装入器应该尝试定位或生成构成类定义的数据。 典型的策略是将名称转换为文件名,然后从文件系统中读取该名称的“类文件”。 每个类对象都包含对定义它的...
    2018-10-08 08:04:16 | JVM
  • JVM-08-bytecode
    Bytecode 字节码指令 jvm 内部细节 本文分为三部分,每一部分都分成几个小节。 每个小节都可以单独阅读,不过由于一些概念是逐步建立起来的,如果你依次阅读完所有章节会更简单一些。 每一节都会覆盖到Java代码中的不同结构,并详细介绍了它们是如何编译并执行的。 变量 局部变量 JVM是一个基于栈的架构。方法执行的时候(包括main方法),在栈上会分配一个新的帧,这个栈帧包...
    2018-10-08 08:04:16 | Java
  • JVM-07-class file
    class 文件查看 java 代码 package com.github.houbb.jvm.learn; public class Main { public static void main(String[] args) { System.out.println("hello jvm"); } } 编译后参看文件 >javap -v...
    2018-10-08 08:04:16 | Java
  • JVM-06-jdk 命令行工具,jdk 可视化工具
    jdk 自带工具 在 java 安装目录 bin 下。 你可以看到对应的信息,这里有很多 java 为我们提供的工具。 $ ls appletviewer.exe* java-rmi.exe* javap.exe* jdb.exe* jmap.exe* jstack.exe* klist.exe* poli...
    2018-10-08 08:04:16 | Java
  • JVM-05-class load
    一道题目引发的血案 首先看一道题目。 题目 Singleton.java public class Singleton { private static Singleton singleton = new Singleton(); public static int count1; public static int count2 = 0; ...
    2018-10-08 08:04:16 | Java
  • JVM-04-JVM 调优
    JVM 性能调优 在高性能硬件上部署程序,目前主要有两种方式: 通过 64 位 JDK 来使用大内存; 使用若干个 32 位虚拟机建立逻辑集群来利用硬件资源。 使用 64 位 JDK 管理大内存 堆内存变大后,虽然垃圾收集的频率减少了,但每次垃圾回收的时间变长。 如果堆内存为 14 G,那么每次 Full GC 将长达数十秒。如果 Ful...
    2018-10-08 02:04:06 | Java
  • JVM-04-GC
    GC 概念 在计算机科学中,垃圾收集(GC)是一种自动内存管理方式。 垃圾收集器,或者仅仅是收集器,试图回收垃圾,或者被程序不再使用的对象占用的内存。 垃圾收集是John McCarthy在1959年左右发明的,用于简化Lisp中的手动内存管理 垃圾收集本质上与手动内存管理相反,手动内存管理要求程序员指定释放和返回内存系统的对象。然而,许多系统使用多种方法的组合,包括堆栈分配和区域...
    2018-10-08 02:04:06 | Java
  • JVM-03-OOM
    OOM 为什么要知道 1、内存泄露一般是代码设计存在缺陷导致的,通过了解内存泄露的场景,可以避免不必要的内存溢出和提高自己的代码编写水平; 2、通过了解内存溢出的几种常见情况,可以在出现内存溢出的时候快速的定位问题的位置,缩短解决故障的时间。 概念 内存泄露 指程序中动态分配内存给一些临时对象,但是对象不会被GC所回收,它始终占用内存。即被分配的对象可达但已无用。 ...
    2018-10-08 02:04:06 | Java