理解JAVA内存模型

 2024-01-13 03:03:54  阅读 0

1.关于JAVA内存模型

JAVA内存模型是Java的基础,每个开发人员都需要对其有一定的了解。 只有更好地理解底层的东西,才能促进更好的进步。

本文记录JDK1.8之前的内存模型。 在Java中,内存主要分为以下几个块:

(1)堆

它是最大的一块内存区域,由所有线程共享,用于存储新的实例对象。

(2) 堆栈

它分为Java虚拟机栈和本地方法栈。

Java虚拟机栈(JVM Stack):

每个 JVM 线程都有一个私有堆栈,用于执行 Java 方法。

本地方法stack():

虚拟机堆栈所扮演的角色非常相似。 不同的是,虚拟机栈服务于虚拟机执行Java方法(即字节码),而本地方法栈服务于虚拟机使用的方法。

(3)方法区

用于存储虚拟机加载的类、静态变量和常量的信息。

(4) 程序计数器

程序计数器记录了当前线程执行程序的位置,改变计数器的值来决定下一条要执行的指令,比如循环、分支、方法跳转、异常处理、线程恢复等都依赖于程序柜台。

2. 常用JVM参数

-Xms初始堆大小

-Xmx最大堆大小

-Xmn年轻代大小

-XX:永久代初始值

-XX:最大永久代大小

-XX:年轻代与老年代的比例

-XX:Eden区域与区域大小的比例

-XX:+ 打印GC时间

-XX:+ 打印GC日志

-:../.log gc 日志位置

3、参数设置位置

以部署为例:

编辑bin目录下的.bat文件,添加

set CATALINA_OPTS=-XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:../tomcat_gc.log

启动服务并执行gc后,生成gc日志

标签: 虚拟 内存 线程

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码