Java核心知识点-JVM结构和工作方式

转载 2016年05月30日 11:23:06

一、JVM体系结构

1.1 JVM中主要包括(PC寄存器,栈,)(堆,方法区,)本地方法区

Java核心知识点-JVM结构和工作方式

一个Java线程中,包括PC寄存器(保存当前执行的指令位置),和栈帧(一个方法对应一个栈帧),本地变量(保存计算中的临时数据),当一个线程结束后,线程内所有数据就自动销毁,不需要垃圾回收。

Java核心知识点-JVM结构和工作方式

  • PC寄存器和栈

Java核心知识点-JVM结构和工作方式

将1压入栈中,将2压入栈中,将1,2弹出计算1+2,将3压入栈顶,OVER。

  • 方法区:

方法区是堆的一部分,就是java的永久区PermGen。

Java核心知识点-JVM结构和工作方式

  • 本地方法区

本地方法区是为了JVM运行native方法(c/c++等语言写的方法)准备的区。

1.2 内存分配方式:

  • 静态内存分配:

在编译时确定需要的内存空间,当程序加载时系统把内存一次性分配给它。静态内存分配是在java栈上分配的,当方法结束时对应的栈帧也就撤销,所以分配的内存空间就被回收。

public void staticData(int arg){//int类型占4个字节

String s="haha";//引用类型占4个字节,(常量池中)

long l=1.00;//long占8个字节

Long lg=1L;//原生类型,这里是引用引用占4个字节(常量池中)

Object o=new Object();//(堆中)

}

上面一段代码会占用内存空间4+4+8+4+4=24。

  • 动态内存分配:

程序执行的时候才知道要分配的内存大小,当对象创建的时候,在堆上给对象分配一块空间,空间回收时间不定,由JVM垃圾回收器管理。

1.3 垃圾回收算法

Java核心知识点-JVM结构和工作方式

  • 新创建的对象会分配到Young的Eden上,如果Eden满了就触发MinorGC,将Eden区中存活的对象保存到Survivor的一个区中,同时将Survivor另一个区存活的对象也保存到Survivor这个区中,Survivor区始终有一个区是空的。

  • survivor的一个区满了之后,会将对象直接放到Old区,Old区满了会触发FullGC,将回收整个堆空间。

  • perm区主要保存class对象,垃圾回收也是FullGC触发

Java核心知识点-JVM结构和工作方式

一、JVM体系结构 1.1 JVM中主要包括(PC寄存器,栈,)(堆,方法区,)本地方法区 一个java线程中,包括PC寄存器(保存当前执行的指令位置),和栈帧(一个方法对应一个栈帧),本地变量(...
  • u013782203
  • u013782203
  • 2016年03月22日 11:09
  • 650

Java核心知识点-JVM结构和工作方式

来自:Shawn_wang - 博客 链接:http://blog.csdn.net/u013782203/article/details/50953336 程序猿自媒体已获转载授权 ...
  • alibert
  • alibert
  • 2016年05月25日 11:21
  • 184

java核心机制之JVM

核心机制之JVM Java虚拟机可以理解成一个以字节码为机器指令的CPU 对于不同的运行平台,有不同的虚拟机 Java虚拟机机制屏蔽了底层运行平台的差别,能够很好的实现跨平台...
  • itlwc
  • itlwc
  • 2016年06月13日 19:27
  • 864

Java核心知识点-JVM结构之常量池

java常量池详细介绍
  • u013782203
  • u013782203
  • 2016年03月30日 19:23
  • 843

Java虚拟机详解----JVM内存结构

http://www.cnblogs.com/smyhvae/p/4748392.htm 主要内容如下: JVM启动流程JVM基本结构内存模型编译和解释运行的概念   ...
  • bluetjs
  • bluetjs
  • 2016年10月20日 17:10
  • 7393

Java核心知识点-Java多线程

先看一图: 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲一下进程和线程的区别:   进程:每个进程都有独立的代码和数据...
  • u013782203
  • u013782203
  • 2016年03月24日 13:21
  • 251

JVM体系结构-----深入理解内存结构

一、概述        内存在计算机中占据着至关重要的地位,任何运行时的程序或者数据都需要依靠内存作为存储介质,否则程序将无法正常运行。与C和C++相比,使用Java语言编写的程序并不需要显示的为每...
  • ljheee
  • ljheee
  • 2016年08月17日 00:42
  • 2395

jvm知识点介绍

1. 什么是JVM? JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能...
  • qw463800202
  • qw463800202
  • 2017年01月12日 16:31
  • 271

javascript中的一些核心知识点以及需要注意的地方

javascript中的一些核心知识点以及需要注意的地方 转载于:javascript中的一些核心知识以及需要注意的地方 前言 近期杂事甚多,这些事情的积累对知识体系的提升有好处,但是却不能整...
  • taoerchun
  • taoerchun
  • 2016年06月28日 18:36
  • 1174

jvm-java 内存模型 以及各个分区具体内容

java内存模型
  • steady_pace
  • steady_pace
  • 2016年04月26日 22:08
  • 5550
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java核心知识点-JVM结构和工作方式
举报原因:
原因补充:

(最多只允许输入30个字)