�@�c���ꂽ���͂���1�B���܂����������[�N���������Ă���{�Ԋ��ŁA���Ƃ��Ă������̏����擾���邱�Ƃ��B�v���t�@�C����p���邱�Ƃ��m�������A���\���m���ɗ\�z����邽�߁A�{�Ԋ��ɓ������邱�Ƃ͍l�����Ȃ��B
�ҏW�����F�v���t�@�C���ɂ��ďڂ����m�肽���ǎ҂́A�A�ڑ�1���́u����6�F�v���t�@�C���v�����Q�Ƃ��������B
�@�ǂ�����A�ƍl�������˂Ă����Ƃ���A�ꏏ�ɉ�͂ɓ������Ă����������uPrintClassHistogram�I�v�V�������g����̂ł͂Ȃ����v�Ƃ̏����B�������ŃT�[�r�X�ւ̉e�����Ȃ����Ƃ��m�F������A�v���W�F�N�g�����o������钆�A�Ō�̖]�݂�q����PrintClassHistogram��{�Ԋ��֓K�p�����B
�@���̃I�v�V������m��Ȃ����̂��߂ɁAPrintClassHistogram�I�v�V�����ɂ��Đ������悤�BPrintClassHistogram�I�v�V�����́A�q�[�v���̃N���X���v�����o�͂��邽�߂̃I�v�V�������B�o�͎��_�ł̊e�N���X�̃C���X�^���X�̌�����ёS�C���X�^���X�̍��v�T�C�Y���AGC���O�ƂƂ��ɏo�͂����B
�@PrintClassHitogram�̓����́A�v���t�@�C���Ɣ�r���Đ��\�ւ̉e�������ɏ������AJava�N���I�v�V�����̏C�������ŗ��p�ł��A�K�p�\�ȃo�[�W������Java 1.4.2�ȏ�ƕ��L���Ƃ����_���i�ڍׂ���q�j�B���p���@�͎����ĊȒP�ŁAJava�N�����Ɉȉ��̃I�v�V������lj����邾�����B
java -verbose:gc -XX:+PrintClassHistogram TestMain
�@GC���O���o�͂��Ă��Ȃ��ƁA�{�I�v�V�����͋@�\���Ȃ����Ƃɒ��ӂ��Ăق����B���̃I�v�V������t������Java���N����A���̃v���Z�X�ɑ��Ĉ��Ԋu���Ƃ�SIGQUIT�V�O�i���𑗐M����B
kill -3 <java pid>
�@UNIX�n�Ȃ�Acrontab�ŏ�L�R�}���h�����s����悤�ݒ肷��A����I�ɃN���X���v����GC���O�ɏo�͂���悤�ɂȂ�B
�@��Ljava�R�}���h�����s����ƁA�ȉ��̃t�H�[�}�b�g�ŁA�N���X���v���GC���O�ɏo�͂����B
num #instances #bytes class name -------------------------------------- 1: 244594 35380344 [C 2: 982063 23569512 java.lang.String 3: 15788 17285632 [B 4: 59009 9135936 <methodKlass> 5: 292468 7019232 java.util.Hashtable$Entry 6: 96069 5493752 [Ljava.util.Hashtable$Entry; �c�c�i���j�c�c 3509: 1 8 sun.reflect.GeneratedMethodAccessor1681 3510: 1 8 sun.reflect.GeneratedMethodAccessor1256 Total 2483297 137466336
�@�u#instances�v�̓C���X�^���X���A�u#bytes�v�͑S�C���X�^���X�̍��v�T�C�Y�A�uclass name�v�̓N���X����\���Ă���B��L��ł́A�v24��4594�A3538��0344bytes��char�^���z�������݂��Ă��邱�Ƃ�������B�Ȃ��A�C���X�^���X����0�ł���N���X�́A���̃��X�g���ɂ͕\��Ȃ��Ƃ����_�ɒ��ӂ��Ăق����B
�@1�̃N���X���v����ł́A���������[�N��͂ɂ͕s�\�����B�����̃N���X���v�����擾���A�N���X���ƂɏW�v���邱�ƂŁA�ǂ̃N���X�̃C���X�^���X�����[�N���Ă��邩�ׂ邱�ƂŁA���m���Ƀ��������[�N����͂ł���悤�ɂȂ�B
�@�ł́A�ȒP�ȃT���v�����������B
�@�I�u�W�F�N�g����T�C�Y�����l��ۂ������Ă���B���̂悤�ȏꍇ�A���������[�N�͔������Ă��Ȃ��Ɣ��f�ł���B
�@�I�u�W�F�N�g���������̓T�C�Y���E���オ��ŏ㏸�𑱂��Ă���B���̂悤�ȏꍇ�A���������[�N���������Ă���Ɣ��f������Ȃ��B
�@�I�u�W�F�N�g������уT�C�Y��������l�܂ŏ㏸�𑱂�����A���̌�͂��̒l�ŖO�a���Ă���B���̂悤�ȏꍇ�A���������[�N���ۂ��f���邱�Ƃ͓�����A����������������悤�ȃv���O�����i�Ⴆ�ALRU�iLeast Recently Used�j�L���b�V����WeakReference�̗��p�Ȃǁj�����삵�Ă���\��������B�S�q�[�v�T�C�Y�ɑ��āA�Y���N���X�̑��T�C�Y���ڗ����đ傫���ꍇ�A�v���O�����̏C���ΏۂƂȂ�ł��낤�B
�@String�N���X�Ȃǂ̂悭���p�����N���X�ł���ꍇ�A�}8�̂悤�ȃO���t�ɂȂ�₷���B���̂悤�ȏꍇ�A��������Ă��邢�����̌����Ō��сi�t�b�g�v�����g�j�A���̃t�b�g�v�����g���E���オ�肩�ۂ��ŁA���[�N���ۂ��̔��f������Ƃ悢�B
�@�d���݊���������A�N���X���v���t����GC���O������͂�i�߂Ă����ƁA�������̃N���X�Ŗ��m�ȃ��������[�N���������Ă��邱�Ƃ��m�F�ł����B
�@ObjectName�̐������̂́Ajavax.management.ObjectName�ł���BObjectName��MBean�̃I�u�W�F�N�g����\���A�I�u�W�F�N�g��JMX�iJava Management Extensions�j�Ǘ����ɒu���ۂɍ쐬�����B�Ɩ��S���҂Ɋm�F����ƁA�J�������v���O�������ŁAObjectName�ǂ��납JMX�𗘗p���Ă�����͂ǂ��ɂ��Ȃ��Ƃ����B
�ҏW�����FJMX�ɂ��ďڂ����m�肽���ǎ҂́A�A�ڑ�1���� �u����7�FJMX�N���C�A���g�v�����Q�Ƃ��������B
�@�܂��Ajava.util.HashMap�֘A�̃N���X�̋����������[���BHashMap�̌���ObjectName�̌��Ƃł͑��ւ�����悤�ɂ͌����Ȃ��B�������AHashMap.Entry�̌���ObjectName�̌��Ƃł́A���ɋ������ւ�������B����ɁAHashMap.Entry[]�̃T�C�Y���A�K�i���삯���悤�ɓˑR�㏸���Ă���B���̂����A�����͂���܂ł̃T�C�Y�Ɠ������x���B
�@���̓������炢���邱�Ƃ́Aput�͂������̂�remove����Ȃ��悤�ȁAObjectName���L�[�������͒l�ƂȂ�HashMap��1���݂��邱�Ƃ��BObjectName�ɂ̓L���b�V��������ɈႢ�Ȃ��B�g���u���n�b�J�[�Ƃ��Ă̊��������₢���B
�@�����AJMX�̃\�[�X�R�[�h��ǂ������Ă����ƁA���������[�N���Ă���Ƃ��ڂ����Y�������m�F�ł����B��قǂ̑z��ǂ���Astatic��HashMap���L���b�V���Ƃ��ė��p���Ă����̂��B�����āA�c�O�Ȃ��炱�̃L���b�V���́A�����ɑ�������\�����߂Ă����B
public class ObjectName implements Serializable{ �c�c�i���j�c�c private static HashMap m_cache = new HashMap(); �c�c�i���j�c�c private void parse(String objectName) throws MalformedObjectNameException{ �c�c�i���j�c�c m_cache.put(objectName, this); �c�c�i���j�c�c } �c�c�i���j�c�c }
�@���[�N���Ă���C���X�^���X�͕��������B�����A�����_�@�Ƀ��[�N���Ă��邩�A���Ȃ킿�ǂ�����Č����邩�A�Ƃ������Ƃ͕������Ă��Ȃ��B�����ŁA���[�N���Ă���ObjectName�N���X�ɓI���i���āA�������ɂĂ���Ȃ钲�����s�����Ƃɂ����B
�@���p����c�[���́AHPROF���BHPROF�́A���̃I�[�o�w�b�h�̑傫������{�Ԋ��ł͗��p�ł��Ȃ��iHPROF�ɂ��ďڂ����m�肽���ǎ҂́A�uHPROF �v���t�@�C���G�[�W�F���g�v�����Q�Ƃ��������j�B�������A���łɂ��܂܂ł̒�����ObjectName�����[�N���Ă���Ɠ˂��~�߂Ă��邽�߁A�����Ƀ����������[�N����܂ōČ��������s���K�v�͂Ȃ��B�Č������ɂāAObjectName�����Ă����X�^�b�N�g���[�X�̂����A�����ł��㏸��������X�^�b�N�g���[�X�������t���o����A�C���͊����ƂȂ�B
�@�ł́AHPROF��p�����������ʂ����Ă݂悤�B���L�̃X�^�b�N�g���[�X�ɂāAObjectName����������Ă��邱�Ƃ����������B
TRACE 54218: org.apache.jk.common.ChannelSocket.registerRequest(ChannelSocket.java:431) org.apache.jk.common.HandlerRequest.decodeRequest(HandlerRequest.java:443) org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:352) org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:743) org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:675) org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:866) org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) java.lang.Thread.run(Thread.java:534)
4509 0.00% 97.06% 512 16 512 16 54218 javax.management.ObjectName 22676 0.00% 99.33% 48 1 48 1 54218 [C 43364 0.00% 99.88% 24 1 24 1 54218 java.lang.String 132178 0.00% 100.00% 0 0 384 16 54218 java.lang.StringBuffer
�@�����͂Ȃ�ƁAApache�imod_jk�j����̐ڑ����t�����Ƃ��Ɏ��s�������Ȃ̂��B���ꂪ��������ATomcat��mod_jk����ڑ����t����ƁA�R�l�N�V���������������B���̃R�l�N�V������JMX�ŊǗ�����ۂ�ObjectName�����������B�������ꂽ���̂́A�L���b�V���Ƃ���HashMap�Ɋi�[����A���������[�N�������N�����Ă���Ƃ����̂��B
Copyright © ITmedia, Inc. All Rights Reserved.