深入理解JVM总结

2018-05-19

深入理解JVM总结

1. 大概内容

2. 内存结构介绍

我们在Java开发时经常会遇到OutOfMemory的错误,那我们有时候会不清楚问题在哪里,需要花很大力气调试;我们在开发时需要设置JVM参数,那么,我们就只有在了解了JVM的内存结构之后,才能更好的帮助我们进行Java开发。

首先,JVM的内存结构主要分为三个最主要的部分:堆,方法区和栈,其中堆负责存放对象实例,是虚拟机内存中最大的一部分;方法区存储类信息、常量、静态变量等数据;栈分为java虚拟机栈和本地方法栈主要用于方法的执行。下面详细介绍一下JVM内存各部分的作用:

import java.text.SimpleDataFormat;
import java.util.Date;
import org.apache.log4j.Logger;

public class HelloWorld{
    private static Logger LOGGER = Logger.getLogger(HelloWorld.class.getName());
    public void sayHello(String Hello){
        SimpleDataFormat formatter = new SimpleDataFormat("dd.MM.YYYY");
        String today = formatter.format(new Date());
        LOGGER.info(today + " : "+messeage);
    }
}

​ 在上面的实例中,数据在内存中的存放如下:

内存位置 存放数据
Object: HelloWorld
Object: SimpleDataFormat
Object: String
Object:Logger
方法区 Class: HelloWorld
Class: Logger
Class: SimpleDataFormat
JVM栈 Parameter Ref: String “message”
Variable Ref: formatter
local primitive: “lineNo”

2018-05-26更新

3.垃圾回收器

由于堆中的对象和方法区中所占用的内存,既不能像程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理。因此,需要进行垃圾回收。


2018-6-16更新

JVM类加载机制

点击查看评论

所有文章