java-Java的内存模型之方法区

问题描述

Java的内存模型之方法区

这两天看Java的内存模型,越看越迷糊,到底Java文件里的方法区是如何存储的,又是如何管理的呢?

解决方案

方法,也就是函数的实现,应该是在代码区。但函数中肯定会用到内存,无论是静态分配的、还是动态分配的。

解决方案二:

http://blog.csdn.net/lihaipeng0417/article/details/12653741

解决方案三:

方法,也就是函数的实现,应该是在代码区。但函数中肯定会用到内存,无论是静态分配的、还是动态分配的。
http://blog.csdn.net/lihaipeng0417/article/details/12653741

时间: 2024-09-24 09:17:29

java-Java的内存模型之方法区的相关文章

Java String#intern() 内存模型详解教程

大家知道,Java中string.intern()方法调用会先去字符串常量池中查找相应的字符串,如果字符串不存在,就会在字符串常量池中创建该字符串然后再返回. 字符串常量池是一个固定大小的HashMap,桶的数量默认是1009, 从Java7u40开始,该默认值增大到60013.在Java6当中,字符串常量池是放在Perm空间的,从Java7开始,字符串常量池被移到 Heap空间.下面,我们通过测试程序来窥探字符串常量池在Java6,Java7两个不同版本底下的内存分配情况. 测试程序  代码如

深入理解 Java String#intern() 内存模型

字符串常量池是一个固定大小的HashMap,桶的数量默认是1009, 从Java7u40开始,该默认值增大到60013.在Java6当中,字符串常量池是放在Perm空间的,从Java7开始,字符串常量池被移到Heap空间.下面,我们通过测试程序来窥探字符串常量池在Java6,Java7两个不同版本底下的内存分配情况. 测试程序 public class StringPoolTest {        public void testStringPoolWithLongString(){     

java内存管理(堆、栈、方法区)

java内存管理 简介 首先我们要了解我们为什么要学习java虚拟机的内存管理,不是java的gc垃圾回收机制都帮我们释放了内存了吗?但是在写程序的过程中却也往往因为不懂内存管理而造成了一些不容易察觉到的内存问题,并且在内存问题出现的时候,也不能很快的定位并解决.因此,了解并掌握Java的内存管理是我们必须要做的是事,也只有这样才能写出更好的程序,更好地优化程序的性能. 概述 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干不同的数据区域,这些区域都有各自的用途以及创建和销毁

Java笔记:Java内存模型

1. 基本概念 <深入理解Java内存模型>详细讲解了java的内存模型,这里对其中的一些基本概念做个简单的笔记.以下内容摘自 <深入理解Java内存模型>读书总结 并发 定义:即,并发(同时)发生.在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行. 并发需要处理两个关键问题:线程之间如何通信及线程之间如何同步. 通信:是指线程之间如何交换信息.在命令式编程中,线程之间的通信机制

Java内存模型-jsr133规范介绍(转)

最近在看<深入理解Java虚拟机:JVM高级特性与最佳实践>讲到了线程相关的细节知识,里面讲述了关于java内存模型,也就是jsr 133定义的规范. 系统的看了jsr 133规范的前面几个章节的内容,觉得受益匪浅.废话不说,简要的介绍一下java内存规范. 什么是内存规范 在jsr-133中是这么定义的 A memory model describes, given a program and an execution trace of that program, whether the e

java虚拟机 jvm 方法区实战

和java堆一样,方法区是一块所有线程共享的内存区域,用于保存系统的类信息,类的信息有哪些呢.字段.方法.常量池.方法区也有一块内存区域所以方法区的内存大小,决定了系统可以包含多少个类,如果系统类太多,方法区内存不够肯定会导致方法区溢出,虚拟机同样会抛出内存溢出信息.(内存溢出后面相关文章给大家总结) jdk6和jdk7中,方法区可以理解为永久区(Perm).永久区可以使用参数-XX:PermSize和-XX:MaxPermSize制定.默认情况下-XX:MaxPermSize为64MB.如果你

java类变量的在方法区中分配的内存地址存在哪?

问题描述 例如:class Test {pulbic static int testStaticInt = 5;public Test() {}...}假如该类被加载后(虚拟机的加载的顺序:装载 , 连接, 初始化),当到达"连接"部分时需要为类变量teststatciInt分配内存空间并初始化默认值0,.我想请教大牛帮忙解释下当前teststatciInt内存的地址有谁保存?当有调用Test.teststatciInt时Test如何查到teststatciInt的内存地址? 问题补充

全面理解Java内存模型

Java内存模型即Java Memory Model,简称JMM.JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式.JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的. 如果我们要想深入了解Java并发编程,就要先理解好Java内存模型.Java内存模型定义了多线程之间共享变量的可见性以及如何在需要的时候对共享变量进行同步.原始的Java内存模型效率并不是很理想,因此Java1.5版本对其进行了重构,现在的Java8仍沿用了Java1.5的版本. 关于并发编程 在并发

[Java]深入理解Java内存模型(一)基础

在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体).通信是指线程之间以何种机制来交换信息.在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递. 在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信.在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过明确的发送消息来显式进行通信. 同步是指程序用于控制不同线程之间操作发生相对顺序的机制.在共享内存并发模型里,同步是显式进