jvm

粗略分:heap(堆),stack(栈)

 

jvm的结构细分及其概述

Java 虚拟机有一个堆,堆是运行时数据区域,

所有类实例和数组的内存均从此处分配。

堆是在 Java 虚拟机启动时创建的。”

“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。

可以看出JVM主要管理两种类型的内存:堆和非堆。

简单来说堆就是Java代码可及的内存,是留给开发人员使用的;

非堆就是JVM留给自己用的。

 

jvm 内存结构

堆: 逻辑上是连续,物理上可以处于不连续的内存空间中,

     里面存储的是对象实例以及数组。可以细分为新生代,老年代。

     通过-Xmx和-Xms控制大小。

 

虚拟机栈:基本数据类型,对象引用(地址,指针)。

 

本地方法栈(了解):它与虚拟机栈发挥的作用差不多,

区别在于虚拟机栈为java方法的执行提供服务,而本地方法栈为虚拟机使用到的Native(本地)方法服务。

 

方法区:放了所加载的类的信息(名称、修饰符等)、类中的静态变量、

        类中定义为final类型的常量、类中的Field信息、类中的方法信息

        在Sun JDK中这块区域对应的为PermanetGeneration,又称为持久代,

        默认为64M,可通过-XX:PermSize以及-XX:MaxPermSize来指定其大小

   

在服务器启动的时候报内存溢出是因为方法区太小,也就相当于持久代的内存太小。

通过-XX:PermSize以及-XX:MaxPermSize来指定其大小,可以解决这个问题。

 

常量池是方法区的一部分,用来存储常量信息。如String就存储在常量池中。

计数器(了解):通过该计数器的值来选取下一条要执行的字节码指令。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值