JVM-07-class file JVM 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 Java 类加载机制
一道题目引发的血案
首先看一道题目。
题目
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 JVM 堆内存溢出(outOfMemoryError:java heap space)
OOM
为什么要知道
1、内存泄露一般是代码设计存在缺陷导致的,通过了解内存泄露的场景,可以避免不必要的内存溢出和提高自己的代码编写水平;
2、通过了解内存溢出的几种常见情况,可以在出现内存溢出的时候快速的定位问题的位置,缩短解决故障的时间。
概念
内存泄露
指程序中动态分配内存给一些临时对象,但是对象不会被GC所回收,它始终占用内存。即被分配的对象可达但已无用。
...
2018-10-08 02:04:06 |
Java
JVM-02-JMM 运行时内存模型
运行时内存模型
相关内容参见 java 运行时内存模型
直接内存
特征
直接内存并非 JVMS 定义的标准 Java 运行时内存。
直接内存区域是全局共享的内存区域。
直接内存区域可以进行自动内存管理(GC),但机制并不完善。
本机的 Native 堆(直接内存) 不受 JVM 堆内存大小限制。
可能出现 OutOfMemoryError 异常。
nio
...
2018-10-07 23:19:52 |
Java
JVM-02-HotSpot 虚拟机对象探秘
对象的内存布局
在 HotSpot 虚拟机中,对象的内存布局分为以下 3 块区域:
对象头(Header)
实例数据(Instance Data)
对齐填充(Padding)
对象头
对象头记录了对象在运行过程中所需要使用的一些数据:
哈希码
GC 分代年龄
...
2018-10-07 23:19:52 |
Java