JVM 参数

-Xmx         最大堆

-Xms         最小堆

-Xss          栈大小

-Xmn          新生代(年轻代)大小

-XX:SurvivorRatio        Eden与Survivor的比例

-XX:PermSize              永久代(方法区)初始大小

-XX:MaxPermSize       永久代(方法区)最大容量

-XX:MaxDirectMemorySize       直接内存最大容量(默认与Xmx一样)

-XX:+PrintGCDetails                  查看gc日志

-XX:+PrintFlagsFinal                  输出所有参数及其默认值

-XX:+HeapDumpOnOutOfMemoryError           在出现内存溢出异常时dump出当前的内存堆转储快照

Java内存一般分为堆内存和栈内存

方法区又被成为非堆

运行时常量池在方法区内,字面量和符号引用会分配到常量池中,比如“A”,10等。String的intern()方法作用是:如果池中已经包含一个等于此String对象的字符串,则返回代表池中这个字符串的String对象,否则,将此String对象包含的字符串添加到常量池中,并且返回此String对象的引用。

总内存 = 最大堆(Xmx) + 最大方法区(MaxPermSize) + 程序计数器(很小) + 虚拟机进程 + 虚拟机栈(Xss) + 本地方法栈(Xoss)

其中程序计数器、虚拟机栈、本地方法栈都是线程私有的

原文地址:https://www.cnblogs.com/drizzlewithwind/p/6382010.html