-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)
其中程序计数器、虚拟机栈、本地方法栈都是线程私有的